Kelas fitur mana yang digunakan oleh layanan?


8

Saya memiliki beberapa kelas fitur dan banyak layanan. Ketika saya mencoba untuk membuat kelas fitur saya versi saya mendapatkan pesan bahwa kelas fitur terkunci yang jelas. Tapi itu tidak memberi tahu saya layanan mana yang dikunci.

Apakah ada kemungkinan untuk bekerja melalui semua kelas fitur dengan ArcPy dan mencari tahu di mana layanan itu dirujuk?

Jawaban:


7

ArcGIS Server 10.1+:

Anda dapat melakukan ini, namun tidak ada fungsionalitas out-of-the-box untuk ini. Informasi tentang kelas fitur apa yang digunakan (dan dari file basis data apa mereka datang) tidak diekspos melalui ArcGIS Server Manager / Direktori Layanan / REST Admin.

Namun, informasi ini disimpan sebagai metadata layanan di dalam C:\arcgisserver\directories\arcgissystem\arcgisinput\ServicePaths.MapServer\extractedfolder dalam manifest.xmlfile (ada .json dan .xml). File .Xml berisi informasi lebih rinci, saya sarankan parsing file ini (tetapi Anda bisa mulai dengan .json terlebih dahulu untuk mendapatkan ide).

Dua tag yang harus Anda perhatikan dalam file .xml adalah <Name>ServicePaths</Name>- nama layanan dan beberapa <OnPremisePath>C:\GIS\Temp\test.gdb\StopsSandiego</OnPremisePath>tag yang akan berisi nama kelas fitur dan jalur katalog / geodatabase mereka.

Dari segi kode, Anda dapat menggunakan Python untuk mem-parsing file .xml ini, dapatkan kamus dengan struktur ini:

{str:(tuple)} #data type

{servicename:(featureclasspath)} #pseudocode
{servicename:(fc1,fc2,fc3); servicename1:(fc1,fc2); servicename2:(fc5);...} #pseudocode

Ketika Anda selesai dengan itu, Anda dapat menulis fungsi yang akan mengembalikan kunci kamus (nama pengguna) berdasarkan nilai (nama jalur kelas fitur yang Anda berikan). Ini akan memberi tahu Anda layanan apa yang harus Anda hentikan untuk melepaskan kunci ke kelas fitur.

UPDATE April 2016: Anda dapat melakukan ini dengan manifes layanan REST API untuk layanan, ditambahkan di ArcGIS Server 10.1 SP1:

http://localhost:6080/arcgis/admin/services/Parks/Landmarks.MapServer/iteminfo/manifest/manifest.%format% 

di mana %format%adalah baik jsonatauxml

Posting dengan jawaban lengkap ada di sini: Skrip Python untuk mencetak kelas fitur yang mereferensikan layanan peta AGS

ArcGIS Server 10.0:

Pergi ke C:\Program Files (x86)\ArcGIS\Server10.0\server\user\cfgdan buka file .cfg yang terkait dengan layanan Anda. Cari <FilePath>tagnya. Sekarang Anda dapat mengulangi semua file .cfg di folder ini dengan Python dan mendapatkan informasi tentang file .mxd apa yang digunakan dan karena Anda memiliki akses ke .mxd, Anda bisa mendapatkan setiap jalur sumber data layer dan dengan demikian menampilkan nama kelas.

<ServerObjectConfiguration>

    <Description></Description>

    <Properties>
        <FilePath>D:\temp\TempService.mxd</FilePath>

Alex, terima kasih atas jawabannya. Saya mengerti tetapi sepertinya jawaban Anda terkait dengan versi 10.1. Saya bekerja dengan 10.0 (;-() dan tidak dapat menemukan struktur direktori itu dengan tepat dan file xml. Adakah petunjuk? Thnxs !!
user32324

Ah saya mengerti. Saya telah memodifikasi jawaban saya untuk memenuhi kebutuhan Anda.
Alex Tereshenkov

Alex, terima kasih lagi untuk jawaban Anda. Sudah jelas untuk saya sekarang dan dapat maju dengan "pencarian" saya.
user32324
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.