आर्किट्स रेस्ट सर्विस से डेटासेट डाउनलोड करें


19

Esri.com पर होस्ट किए गए डेटासेट के लिए इस सूचना पृष्ठ को देखते हुए:
http://fema-services2.esri.com/arcgis/rest/services/2012_Sandy/ImageCat_NLT/MapServer/layers

यह जानने की कोशिश कर रहा हूं कि मैं कच्चे डेटा (या तो कच्चे लैट / लैंग निर्देशांक या एसएचपी) तक कैसे पहुंच सकता हूं।

ऐसा लगता है कि डेटा उपलब्ध है, मैं अभी यह नहीं समझ सकता कि इसे इस इंटरफ़ेस से कैसे खींचा जाए।

जवाबों:


27

वह मानचित्र सेवा एक आर्कगिस सर्वर डायनेमिक मैप सेवा है जो आम तौर पर केवल छवियों और विशिष्ट क्वेरी परिणामों को वापस लाती है, एक डब्ल्यूएमएस की तरह। कुछ ArcGIS सर्वर छवि सेवाएं डेटा डाउनलोड की अनुमति देती हैं, लेकिन यह उनमें से एक नहीं है।

आप क्वेरी ऑपरेशन के माध्यम से आपके द्वारा देखी जा रही जानकारी प्राप्त कर सकते हैं, लेकिन यह कई प्रश्न लेगा क्योंकि इस सेवा पर अधिकतम रिकॉर्ड वापसी सीमा 1000 है, और अकेले v14 परत में 58000 से अधिक रिकॉर्ड हैं।

क्वेरी सबमिट करने के लिए, लेयर एंडपॉइंट पर जाएं और नीचे दिए गए ऑपरेशन के लिए नीचे स्क्रॉल करें, फिर क्वेरी पर क्लिक करें । रिकॉर्ड की कुल संख्या को खोजने के लिए, जहां फ़ील्ड में 1 = 1 दर्ज करें, और रिटर्न काउंट केवल के लिए चुनें , 58919 रिकॉर्ड की तरह दिखता है। यह एक बार में केवल 1000 रिकॉर्ड लौटाएगा, इसलिए आपको सभी रिकॉर्ड प्राप्त करने के लिए 59 प्रश्न जारी करने होंगे। OBJECTID द्वारा फ़िल्टर करना सबसे आसान लगता है, इसलिए पहली क्वेरी कहाँ होगी OBJECTID <1000, आउट फ़ील्ड्स = *, रिटर्न जियोमेट्री = TRUE, रिटर्न काउंट = फाल्स, और फॉर्मेट HTML है । सेवा में सभी सुविधाएँ 1- 999 और उनकी विशेषताएँ हैं। आप आउटपुट स्वरूप को KMZ में बदल सकते हैं और बाद में वांछित प्रारूप में परिवर्तित कर सकते हैं, इसके माध्यम से पुनरावृत्ति कर सकते हैं और आपके पास सारा डेटा होगा।

एक और तरीका जो काम करेगा वह है फीचर एंडपॉइंट का उपयोग करके व्यक्तिगत फीचर जानकारी को प्रोग्रामेटिक रूप से हड़पना। ऊपर से HTML स्वरूपित प्रतिक्रिया में, OBJECTID विशेषता वास्तव में केवल उस विशेषता के लिए हाइपरलिंक है । REST URL OBJECTID के साथ समाप्त होता है, इसलिए आप बस वृद्धि कर सकते हैं और JSON में प्रत्येक प्रतिक्रिया को पार्स करना आसान बना सकते हैं।

नोट - इनमें से कुछ विशेषताएं / लिंक केवल आर्कजीस सर्वर 10.1 रीस्ट एंडपॉइंट के लिए लागू हैं।


3
+1 कभी-कभी ObjectIDs अनुक्रमिक नहीं होते हैं (जैसे कि ArcSDE के साथ), इसलिए शायद एक अधिक सामान्य समाधान होगा, return IDs onlyजो सभी 58919 आईडी को लौटाता है।
किर्क कुएकेन्डल

अच्छी बात है, यह भी ध्यान दें कि यह टाइल मैप सेवाओं के लिए उसी तरह से उजागर नहीं है।
wwnick

जब आप ऑब्जेक्ट आईडी द्वारा डेटा प्राप्त करने का प्रयास करते हैं, तो आपने कहा कि "JSON में प्रत्येक प्रतिक्रिया को पकड़ो"। लेकिन इस मामले में डेटा प्रारूप "pjson" या "json" है, लेकिन इन दो प्रारूप को आकृतिफिल या अन्य सामान्य भू-डेटा प्रारूप में कैसे बदला जाए और सबसे आसान क्या है?
SIslam

मैं ओजीआर का उपयोग जेन्स को कन्वर्ट करने के लिए करता हूँ जो भी स्वरूप आपको चाहिए।
wwnick

10

मैं हमेशा अपने आप को उन स्थितियों में पाता हूं जहां मुझे मैप सर्विस से सभी डेटा को एक आकार में निर्यात करने की आवश्यकता होती है। यहां उपयोग करने के लिए एक बहुत ही आसान उपयोगिता है जो हर सुविधा को एक सेवा से निर्यात करेगा और यदि आवश्यक हो तो इसे शेपफाइल और जियोजोन के रूप में बचाएगा। आपको नोड .js. स्थापित या स्थापित करने की आवश्यकता होगी

https://github.com/tannerjt/AGStoShapefile

एक बार जब आप अपने सिस्टम पर फाइलें डालते हैं, तो बस फ़ोल्डर में नेविगेट करें, अपनी मैप सेवा को services.txt फ़ाइल में जोड़ें और कमांड कमांड से इसे चलाएं:

node AGStoSHP.txt services.txt ./output/

अपनी सेवाओं के लिए एक नाम जोड़ने के लिए अपनी सेवाओं में एक पाइप (!) लगाना सुनिश्चित करें।

आशा है कि यह उन लोगों की मदद करता है जिन्हें इस कार्यक्षमता की आवश्यकता है।


यह उत्तर gis.stackexchange.com/questions/98485/… पर पोस्ट किए गए एक के समान है। आम तौर पर पहचाने जाने वाले उत्तरों का अर्थ है कि वे जिन प्रश्नों पर लागू हो रहे हैं, वे डुप्लिकेट होने चाहिए। अगर ऐसा है तो कृपया उन्हें इस तरह ध्वजांकित करें।
PolyGeo

धन्यवाद, मैंने डुप्लिकेट के रूप में अन्य प्रश्न को चिह्नित किया। उन्हें अलग-अलग तरीकों से पूछा जाता है, लेकिन मूल रूप से एक ही है।
jOshT

4

कमांड लाइन और पायथन पैकेज pyesridump का उपयोग करके एक समय में एक आर्कजीस्ट रीस्ट मैपस्वर पर संग्रहीत डेटा डाउनलोड करें ।

उदाहरण आदेश:

esri2geojson http://gis.naperville.il.us/arcgis/rest/services/OpenData/OpenDataMapService/MapServer/4 naperville_parking_lots_122417.geojson

क्या आप इस विधि पर अधिक विस्तार कर सकते हैं?
NULL.Dude

1
@ Geo.Dude "esri2geojson" से शुरू होने वाली कमांड का उपयोग करने के लिए, आपको कमांड लाइन के माध्यम से "pyesridump" नामक पायथन पैकेज को स्थापित करना होगा। यह स्थापित करने के बाद कि आप अपने कमांड लाइन में "esri2geojson" से शुरू होने वाली कमांड को कॉपी और पेस्ट कर सकते हैं (एक मैक पर आप बिल्ट-इन टर्मिनल ऐप का उपयोग कर सकते हैं) और कमांड चलाने के लिए एंटर की दबाएं।
स्टेवेंसेंस

0

मुझे हाल ही में ऐसा करना पड़ा और यह मेरा अब तक का सर्वश्रेष्ठ प्रयास था। मैं मूल रूप से यह करने की कोशिश कर रहा था "objectid non in {}".format(ids)कि आईडी कहां एकत्रित ऑब्जेक्ट का टपल होगा लेकिन url कोई डेटा वापस नहीं करेगा, इस बात की सीमा होनी चाहिए कि क्लॉज स्ट्रिंग कितनी देर तक हो सकती है। इस कोड में से कुछ को हार्ड कोडित किया गया है और यदि आईडी इस स्क्रिप्ट की तुलना में गैर-अनुक्रमिक हैं तो सबसे अधिक संभावना नहीं है। लेकिन वैसे भी मुझे आशा है कि यह मार्गदर्शन में मदद करता है

import os, arcpy, json, requests
arcpy.env.workspace=r'C:\path'
arcpy.env.overwriteOutput=True

def non_esri_extract(url,where,idlist):
    dic={"where": where,"outFields": "*","returnGeometry": "true","f":"json"}
    resp=requests.get(url, params=dic)
    data=resp.json()
    for i in data['features']:
        idlist.append(int(i['attributes']['OBJECTID']))
    maximum=max(idlist)
    minimum=min(idlist)
    return maximum,minimum

def esri_extract(url,e_w):
    fields="*"
    esri_param="?where={}&outFields={}&returnGeometry=true&f=json".format(e_w, fields)
    fsURL=url+esri_param
    fs = arcpy.FeatureSet()
    fs.load(fsURL)
    outname="interm"+str(x)
    arcpy.CopyFeatures_management(fs, outname)


x=0
maximum=0
minimum=1
baseURL="http://gismaps.vita.virginia.gov/arcgis/rest/services/VA_Base_layers/VA_Parcels/FeatureServer/0/query"

while maximum!=minimum:
    print "number of loops = {}".format(str(x))
    if x==0:
        ids=[]
        maximum,minimum=non_esri_extract(baseURL,"LOCALITY = 'Franklin County'",ids)
        esri_where="objectid >={} and objectid <={} and LOCALITY = 'Franklin County'".format(minimum,maximum)
        esri_extract(baseURL,esri_where)
        x+=1
    else:
        ids=[]
        interm_where="objectid >={} and objectid <={} and LOCALITY = 'Franklin County'".format(maximum,maximum+999)
        maximum,minimum=non_esri_extract(baseURL,interm_where,ids)
        esri_where="objectid >={} and objectid <={} and LOCALITY = 'Franklin County'".format(minimum,maximum)
        esri_extract(baseURL,esri_where)
        x+=1

fcs = arcpy.ListFeatureClasses()
arcpy.Merge_management(fcs, "Merged")
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.