पाइथन स्क्रिप्ट आर्कपी का उपयोग किए बिना शेपफाइल्स को जियोप्रोसेसिंग के लिए उदाहरण देता है


33

मैं एक पायथन स्क्रिप्ट का उपयोग करना चाहूंगा, जो गुण द्वारा आकार की तरह क्वेरी करने, चयन से नई परत बनाने और बहुभुज के क्षेत्रों की गणना करने और बहुभुज को बिंदुओं में बदलने के लिए चापलूसी पर आधारित नहीं है।

किसी को भी अन्य पायथन मॉड्यूल या पुस्तकालयों का उपयोग करने का कोई कोड उदाहरण है? मैं आसानी से आर्कपी का उपयोग करके ऐसा करने में सक्षम हूं लेकिन मैं अन्य विकल्पों का पता लगाना चाहता था।


geopandas वेक्टर फ़ाइलों के लिए आपका मित्र है। रेखापुंज के लिए रैस्टरियो।
रटगर्ह

जवाबों:


54

यह अजीब है, जैसे कि लोगों ने अचानक पायथन की शक्ति की खोज की (आर्कपी के बिना जो दूसरों के बीच सिर्फ एक पायथन मॉड्यूल है), उदाहरण के लिए देखें प्रश्न पायथन में आकार आकृति देखें :

  • पाइथन में भू-स्थानिक प्रसंस्करण का एक बहुत लंबा इतिहास है, जो आर्कपी (या आर्कगिसस्क्रिप्टिंग) की तुलना में बहुत पुराना है -> कोई "मिमिक" यहां आर्कपी की क्षमताओं की नहीं है, जैसा कि पॉल कहते हैं, ज्यादातर आर्कपी से पहले ही थे।
  • पायथन मॉड्यूल का संदर्भ पायथन पैकेज इंडेक्स ( Pypi ) है और एक समर्पित खंड है: विषय :: वैज्ञानिक / अभियांत्रिकी :: GIS
  • आप इन मॉड्यूल के साथ कुछ भी कर सकते हैं और यह आर्कपी की तुलना में अक्सर आसान और तेज है क्योंकि यह शुद्ध पायथन (कोई अभिशाप नहीं है ...)।
  • Shapely जियोस्पेशियल जियोमेट्रीज के प्रसंस्करण के लिए इन मॉड्यूलों में से एक है -> एक बहुभुज के क्षेत्रों की गणना करें और बहुभुज को बिंदुओं में बदलें।
  • यदि आप वेक्टर लेयर्स को प्रोसेस करना चाहते हैं, तो इसमें ऑसगेओ / ओगर , फियोना या पीशप (और अन्य, कम उपयोग किए गए) -> विशेषताओं द्वारा एक शेपफाइल क्वेरी करें, चयन से नई लेयर बनाएं, बहुभुज के क्षेत्रों की गणना करें, पॉलीगॉन को पॉइंट्स में बदलें।
  • चूहों को संसाधित करने के लिए, मानक ओसेगो / गदल है
  • स्थानिक विश्लेषण के लिए, वहाँ Pysal है
  • 3 डी के लिए, आप जैसे अन्य वैज्ञानिक मॉड्यूल का उपयोग कर सकते numpy या scipy (3 डी एल्गोरिदम, ग्रिड, लेकिन यह भी सांख्यिकी, geostatistics, 2 डी या 3 डी)
  • और मैं मेपनिक , मेट्लोटलिब / बेसमैप , जियोडजंगो और के बारे में बात नहीं करता ...

आप सभी (Pysal को सुडौल, ...) के साथ जोड़ सकते हैं और उन्हें अन्य वैज्ञानिक मॉड्यूल के साथ मिला सकते हैं।

इस प्रकार पाइथन स्क्रिप्ट उदाहरणों के लिए, Pyshp Fiona, ogr, gdal या सुडौल रूप से gis.stackexchange या इंटरनेट (कई उदाहरण, न केवल अंग्रेजी में) की खोज करें।)
उनमें से एक फ्रेंच में (लिपियों और आंकड़े सार्वभौमिक हैं!):
- पायथन: भूगर्भीय परिप्रेक्ष्य में वेक्टर और रेखापुंज परतों का उपयोग करना, बिना जीआईएस सॉफ्टवेयर
अंग्रेजी में एक दूसरे के बिना :
- पायथन, शेपली और फियोना के साथ
और स्पेनिश में जीआईएस
- अनियमित
पॉलीगन्स के क्षेत्रों का निर्धारण gis.stackexchangeex में वर्जन के निर्देशांक का उपयोग करके।
- एक लाइन के प्रत्येक तरफ 10 किमी की ऊंचाई प्रोफ़ाइल
- Pyshp का उपयोग कर विशेषताएँ अद्यतन
- कैसे एक रेखापुंज से एक 3 डी आकार बनाने के लिए?
- दो बिंदुओं के बीच ऊंचाई अंतर प्राप्त करने के लिए पायथन लिपि
- आदि

आरोन द्वारा प्रस्तुत स्क्रिप्ट को केवल फियोना के साथ अधिक लिखा जा सकता है जो केवल पायथन शब्दकोशों का उपयोग करता है:

import fiona
with fiona.open('sites.shp', 'r') as input:
    with open('hw1a.txt', 'w') as output:
       for pt in input:
           id = pt['properties']['id']
           cover = pt['properties']['cover']
           x = str(point['geometry']['coordinates'][0])
           y = str(point['geometry']['coordinates'][21])
           output.write(id + ' ' + x + ' ' + y+ ' ' + cover + '\n')

और यदि आप इसके अतिरिक्त आकार में उपयोग करते हैं:

from shapely.geometry import shape
with fiona.open('sites.shp', 'r') as input:
    with open('hw1a.txt', 'w') as output:
       for pt in input:
           id = pt['properties']['id']
           cover = pt['properties']['cover']
           x = str(shape(pt['geometry']).x)
           y = str(shape(pt['geometry']).y)
           output.write(id + ' ' + x + ' ' + y+ ' ' + cover + '\n')

दो पुस्तकें भी हैं:

एरिक वेस्ट्रा का पायथन जियोस्पेशियल डेवलपमेंट

यहाँ छवि विवरण दर्ज करें

जोएल लॉहेड के अजगर के साथ भू-स्थानिक विश्लेषण सीखना

यहाँ छवि विवरण दर्ज करें

अजगर भी QGIS (क्वांटम जीआईएस), घास जीआईएस, gvSIG या OpenJump या 3 डी मॉडलर तरह जैसे अन्य जीआईएस अनुप्रयोगों में एक पटकथा भाषा के रूप में प्रयोग किया जाता है पाराव्यू (और ब्लेंडर भी!)। और आप इन सभी एप्लिकेशन में अधिकांश भू-स्थानिक मॉड्यूल का उपयोग कर सकते हैं (देखें ब्लेंडर के साथ QGIS डेटा विज़ुअलाइज़िंग देखें )


आप जो बोलते हैं उसका यह अजगर सामान क्या है?)
नाथन डब्ल्यू

फियोना विंडोज पर एक DLL त्रुटि फेंकने लगता है।
मल्टीगूडवॉर्स

आपने फियोना को कैसे स्थापित किया? मेरे लिए कोई समस्या नहीं
जीन

19

मैं आपको शुरू करने के लिए ओपन सोर्स जीआईएस का उपयोग करके पाइथन के साथ यूएसयू साइट जियोप्रोसेसिंग की अत्यधिक अनुशंसा करता हूं । वे मुख्य रूप से अभ्यास के दौरान GDAL / OGR पुस्तकालय का उपयोग करते हैं। GDAL / OGR को स्थापित करना एक चुनौती हो सकती है, इसलिए यह ब्लॉग प्रविष्टि आपके लिए उपयोगी हो सकती है: Windows पर Python के लिए GDAL (और OGR) स्थापित करना । इसके अलावा GIS.SE पर Arcpy का उपयोग करने के लिए वैकल्पिक विकल्प देखें।

निम्न ओपनसोर्स जियोप्रोसेसिंग स्क्रिप्ट उदाहरण (USU साइट से) का उपयोग विशेषता डेटा निकालने और इसे एक पाठ फ़ाइल में लिखने के लिए किया जाता है:

# import modules
import ogr, os, sys

# set the working directory
os.chdir('f:/data/classes/python/data')

# open the output text file for writing
file = open('hw1a.txt', 'w')

# get the shapefile driver
driver = ogr.GetDriverByName('ESRI Shapefile')

# open the data source
datasource = driver.Open('sites.shp', 0)
if datasource is None:
  print 'Could not open file'
  sys.exit(1)

# get the data layer
layer = datasource.GetLayer()

# loop through the features in the layer
feature = layer.GetNextFeature()
while feature:

  # get the attributes
  id = feature.GetFieldAsString('id')
  cover = feature.GetFieldAsString('cover')

  # get the x,y coordinates for the point
  geom = feature.GetGeometryRef()
  x = str(geom.GetX())
  y = str(geom.GetY())

  # write info out to the text file
  file.write(id + ' ' + x + ' ' + y + ' ' + cover + '\n')

  # destroy the feature and get a new one
  feature.Destroy()
  feature = layer.GetNextFeature()

# close the data source and text file
datasource.Destroy()
file.close()

4
.Destroyएक भयानक विधि का नाम है: पी
जेसन

5

आपको GDAL / OGR में रुचि हो सकती है ।

GDAL का उपयोग चूहों को संसाधित करने के लिए किया जाता है जबकि OGR का उपयोग वैक्टर के लिए किया जाता है। दोनों ही ओपन सोर्स लाइब्रेरी हैं।

यदि आप आर्कपी पर कुछ निर्भरता को दूर करने के लिए देख रहे हैं, तो आप जानकारी को सरणी में पढ़कर और शुद्ध पायथन में अपनी गणना चलाकर कुछ क्षमताओं की नकल कर सकते हैं।

मैंने हाल ही में एक बहुभुज में चयन बिंदुओं के साथ ऐसा किया, जैसा कि यहां देखा गया है । यह निर्धारित करने के लिए किरण कास्टिंग एल्गोरिथ्म का उपयोग करता है कि क्या एक बिंदु बहुभुज के कोने के निर्देशांक को देखते हुए एक बहुभुज के भीतर स्थित है।


1
कृपया समाधान को शामिल करें और पृष्ठ पर जाने और पढ़ने से पहले समाधान के सार को समझा जा सकता है। उस समय में यह पृष्ठ शायद उस पते पर नहीं होगा, जो इस उत्तर को प्रस्तुत नहीं करता है। :)
मैट विल्की

1

मैंने इसे कभी भी व्यक्तिगत रूप से उपयोग नहीं किया है, लेकिन कार्यालय में अन्य लोग इसका उपयोग करना पसंद करते हैं: https://pypi.python.org/pypi/Spely


किसी भी मौका आप कुछ नमूना कोड का उपयोग कर सकता है?
शेरपस


5
लिंक केवल उत्तर लंबे समय में सहायक नहीं होते हैं, क्योंकि वे अनिवार्य रूप से टूट जाते हैं। कृपया गंतव्य के बारे में पर्याप्त जानकारी शामिल करें कि a) यह नया घर है, इसे फिर से खोजा जा सकता है और b) समाधान का सार समझा जा सकता है और पृष्ठ पर जाने और पढ़ने से पहले समझा जा सकता है।
मैट विल्की
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.