Những lớp tính năng nào được / được sử dụng bởi dịch vụ?


8

Tôi có một số lớp tính năng và rất nhiều dịch vụ. Khi tôi cố gắng biến lớp tính năng của mình thành phiên bản, tôi nhận được thông báo rằng lớp tính năng bị khóa là điều hiển nhiên. Nhưng nó không cho tôi biết dịch vụ nào bị khóa.

Có khả năng làm việc thông qua tất cả các lớp tính năng với ArcPy và tìm hiểu xem dịch vụ nào được tham chiếu không?

Câu trả lời:


7

Máy chủ ArcGIS 10.1+:

Bạn có thể làm điều này, tuy nhiên không có chức năng vượt trội nào cho việc này. Thông tin về các lớp tính năng được sử dụng (và từ tệp cơ sở dữ liệu nào chúng sẽ đến) không được hiển thị thông qua ArcGIS Server Manager / Services Directory / REST Admin.

Tuy nhiên, thông tin này được lưu trữ dưới dạng siêu dữ liệu dịch vụ trong C:\arcgisserver\directories\arcgissystem\arcgisinput\ServicePaths.MapServer\extractedthư mục trong manifest.xmltệp (có cả .json và .xml). Tệp .Xml chứa thông tin chi tiết hơn, tôi khuyên bạn nên phân tích tệp này (nhưng trước tiên bạn có thể bắt đầu với .json để có ý tưởng).

Hai thẻ bạn nên xem trong tệp .xml là <Name>ServicePaths</Name>- tên dịch vụ và nhiều <OnPremisePath>C:\GIS\Temp\test.gdb\StopsSandiego</OnPremisePath>thẻ sẽ chứa tên lớp tính năng và đường dẫn danh mục / cơ sở dữ liệu địa lý của chúng.

Mã khôn ngoan, bạn có thể sử dụng Python để phân tích tệp .xml này, lấy từ điển với cấu trúc này:

{str:(tuple)} #data type

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

Khi bạn hoàn thành việc đó, bạn có thể viết một hàm sẽ trả về khóa của từ điển (tên dịch vụ) dựa trên giá trị (tên đường dẫn lớp tính năng bạn cung cấp). Điều này sẽ cho bạn biết những dịch vụ nào bạn nên dừng để giải phóng khóa cho lớp tính năng.

CẬP NHẬT Tháng 4 năm 2016: bạn có thể thực hiện việc này với bảng kê khai dịch vụ API REST cho dịch vụ, được thêm vào ArcGIS Server 10.1 SP1:

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

nơi %format%là một trong hai jsonhoặcxml

Một bài đăng với câu trả lời đầy đủ có ở đây: Tập lệnh Python để in các lớp đối tượng tham chiếu các dịch vụ bản đồ AGS

Máy chủ ArcGIS 10.0:

Truy cập C:\Program Files (x86)\ArcGIS\Server10.0\server\user\cfgvà mở tệp .cfg được liên kết với dịch vụ của bạn. Hãy tìm <FilePath>thẻ. Bây giờ bạn có thể lặp qua tất cả các tệp .cfg trong thư mục này bằng Python và nhận thông tin về những tệp .mxd nào được sử dụng và vì bạn có quyền truy cập vào .mxd, bạn có thể nhận từng đường dẫn nguồn dữ liệu lớp và do đó có tên lớp.

<ServerObjectConfiguration>

    <Description></Description>

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

Alex, thanx cho câu trả lời. Tôi hiểu điều đó nhưng theo tôi thì câu trả lời của bạn có liên quan đến phiên bản 10.1. Tôi đang làm việc với 10.0 (;-() và không thể tìm thấy chính xác cấu trúc thư mục đó và tệp xml. Có gợi ý nào không? Thnxs !!
user32324

Ah tôi thấy. Tôi đã sửa đổi câu trả lời của mình để đáp ứng nhu cầu của bạn.
Alex Tereshenkov

Alex, thanxs một lần nữa cho câu trả lời của bạn. Bây giờ tôi đã rõ và có thể tiến lên với "tìm kiếm" của mình.
dùng3232
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.