Arcpy का उपयोग करने के लिए विकल्प


69

मैं वास्तव में मेरे अजगर भूभौतिकी के लिए ESRI के आर्कपी साइट पैकेज का उपयोग करने लगता हूं। ईएसआरआई के श्रेय के लिए, ये एक अविश्वसनीय उपकरण हैं जो एक बहुत अच्छा सौदा पूरा करने में मदद कर सकते हैं। हालाँकि, मैं ESRI Arcpy डोमेन के बाहर जियोप्रोसेसिंग स्क्रिप्ट बनाना भी चाहूंगा। उदाहरण के लिए, यदि मैं एक बहुभुज को रेखापुंज क्लिप करना चाहता हूं, तो मैं ईएसआरआई से निम्नलिखित स्क्रिप्ट के साथ शुरू करूंगा :

# Import system modules
import arcpy
from arcpy import env
from arcpy.sa import *

# Set environment settings
env.workspace = "C:/sapyexamples/data"

# Set local variables
inRaster = "elevation"
inMaskData = "mask.shp"

# Check out the ArcGIS Spatial Analyst extension license
arcpy.CheckOutExtension("Spatial")

# Execute ExtractByMask
outExtractByMask = ExtractByMask(inRaster, inMaskData)

# Save the output 
outExtractByMask.save("C:/sapyexamples/output/extractmask")  

मुझे यकीन नहीं है कि मैं अर्की के बिना प्रोग्राम को समान रूप से कैसे पूरा करूंगा। गंभीर प्रोग्रामर के लिए मेरे सवाल वहाँ: अजगर उपकरणों का कौन सा संग्रह आप उन कार्यों को पूरा करने के लिए उपयोग करते हैं जो ईएसआरआई उपयोगकर्ता आर्कपी साइट पैकेज के साथ पूरा करेंगे? मै कहाँ से शुरू करू?


1
संबंधित: GDAL
blah238

जवाबों:


45

GDAL उपयोग करने का उपकरण है। वास्तव में कि पूरी कॉल gdal_rasterize के लिए एक लाइन है:

gdal_rasterize -l mask -i -burn -9999 mask.shp elevation.tif

अगर आपको पता था कि डेमो का कोई डेटा मूल्य नहीं है

कुछ अजगर नियंत्रण के लिए:

lyr = 'mask'
shp = 'mask.shp'
dem = 'elevation.tif'
ndv = -9999
p = os.Popen('gdal_rasterize -l %s -i -burn %d %s %s' % (lyr,ndv,shp,dem)

जहां अजगर में आपके चर सेट किए जा सकते हैं

पूर्ण अजगर के लिए:

from osgeo import gdal, ogr
from osgeo.gdalconst import *
shp = ogr.Open('mask.shp')
lyr = shp.GetLayer('mask')
dem = gdal.Open('elevation.tif', GA_Update)
ndv = dem.GetRasterBand(1).GetNoDataValue()
gdal.RasterizeLayer(dem, 1, lyr, None, ndv) # other options, such as transformer func, creation options...
dem = None

मैंने अभी C API के लिए सिंटैक्स पर एक त्वरित झाँक लिया, इसलिए अजगर के लिए मेरा सिंटैक्स शायद थोड़ा दूर है। Gdal_alg.h देखें: http://gdal.org/gdal__alg_8h.html


29

20

एक अच्छा प्रारंभिक बिंदु भू-स्थानिक डेटा अमूर्त पुस्तकालय होगा । यह वास्तव में टैटवो लाइब्रेरीज़ से बना है - भू-स्थानिक रेखापुंज डेटा में हेरफेर के लिए GDAL और भू-स्थानिक वेक्टर डेटा में हेरफेर के लिए OGR लेकिन लोग आमतौर पर इसे GDAL कहते हैं।

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


20

अपने बहुत से अकादमिक शोधों में, मैं भू-आकृति विज्ञान के लिए LiDAR डेटा के साथ सतह विश्लेषण कर रहा हूं। मैंने जल्दी से पाया कि आर्कपी का उपयोग करके बहुत सारे ऑपरेशन करना बहुत धीमा था, खासकर बड़े डेटासेट पर। परिणामस्वरूप मैंने उपयोग करना शुरू किया:

  • pyshp को शेपफाइल्स में हेरफेर करने और विशेषता तालिकाओं को अपडेट करने के लिए
  • ASCII आपदाओं को प्रबंधित करने और वक्रता-गणना जैसे कर्नेल-आधारित विश्लेषण करने के लिए सुन्न
  • SciPy परिणाम पर सांख्यिकीय विश्लेषण करते हैं और सतहों के लिए फिटिंग वक्र प्रदर्शन करने के लिए
  • मेटप्लोटलिब रेखांकन और अन्य ग्राफिकल परिणामों को प्लॉट करने के लिए, जैसे कि त्वरित विज़ुअलाइज़ेशन के लिए मूल नक्शे

मैं पुस्तक की सिफारिश भी करूंगा, जो किसी को भी सतह सतहों का विश्लेषण करने के बारे में अधिक जानने के लिए पृथ्वी की सतह प्रक्रियाओं की मात्रात्मक मॉडलिंग । पुस्तक सी ++ में महान कोड नमूनों के साथ आती है, जो आर्कजीआईएस टूल की तुलना में बहुत अधिक कुशल हैं। इन एल्गोरिदम को भी सुन्न की तुलना में अधिक जटिल कुछ भी आवश्यकता के बिना पायथन में पोर्ट किया जा सकता है, हालांकि वे सी ++ में बहुत तेजी से चलते हैं।


16

ESRI का उपयोग करने वाले लोगों के लिए, मुझे लगता है कि GRASS एक GUI अजगर पर्यावरण के साथ एक समान पर्यावरण होगा और विभिन्न कार्यों (रेखापुंज, वेक्टर, सौर टूलकिट आदि) के लिए अलग-अलग 'टूलकिट' में आयोजित किया जाएगा। स्क्रिप्टिंग में पाइथन के अलावा अन्य विकल्प भी हैं लेकिन मैं इसका उपयोग करता हूं।

निश्चित रूप से इस बेहतरीन लिंक को देखें जो अप-टू-डेट है (मेरा मानना ​​है): http://grass.osgeo.org/wiki/GRASS_and_Python

EDIT: ESRI में पृष्ठभूमि वाले लोगों के लिए एक और लिंक: http://grass.osgeo.org/wiki/GRASS_mASS_INts

मैं GDAL की गति का भी दूसरा हिस्सा हूं। यह अमूल्य है और मैं इसके बिना खो जाएगा।


1
GRASS GIS 7 में नया: pyGRASS, देखें ing.unitn.it/~zambelli/projects/pygrass
markusN


16

मुझे लगता है कि अब तक दिए गए जवाब मूल रूप से सभी पैकेजों को कवर करने लायक हैं (उल्लेखनीय रूप से GDAL, OGR, pyshp, NumPy)

लेकिन जीआईएस और पायथन सॉफ्टवेयर प्रयोगशाला भी है , जो दिलचस्प मॉड्यूल के एक जोड़े को होस्ट करता है। वो हैं:

  • फियोना : ओजीआर की एनटर एपीआई
  • Rtree : पायथन जीआईएस के लिए स्थानिक सूचकांक
  • शेपली : कार्टेसियन प्लेन में सुविधाओं के हेरफेर और विश्लेषण के लिए पायथन पैकेज

व्यक्तिगत रूप से मैंने GDAL / OGR के साथ हाल ही में खेलना शुरू किया और विश्लेषण उपकरणों की गति और कवरेज के संबंध में उन्हें बहुत प्रभावशाली पाया।

यहां तरीकों का उपयोग करने के कुछ उदाहरण (इस उत्कृष्ट स्रोत से लिया गया है जो एक बहुत अच्छा प्रारंभिक बिंदु है):

# To select by attribute:
.SetAttributeFilter("soil = 'clay'")

# To select by location, either:
.SetSpatialFilter(<geom>)   

# or
.SetSpatialFilterRect(<minx>, <miny>, <maxx>, <maxy>)

# DataSource objects have a method `ExecuteSQL(<SQL>)`
.ExecuteSQL("SELECT* FROM sites WHERE soil = 'clay' ORDER BY id DESC")


# Plus all the well known tools, like:

# intersect
poly2.Intersect(<geom_1>)

# disjoint?
<geom>.Disjoint(geom_1)

# touches (on the edge?)
<geom>.Touches(geom_1)

# cross each other?
<geom>.Crosses(geom_1)

# within?
<geom>.Within(geom_1)

#contains?
<geom>.Contains(ptB)

# overlaps?
<geom>.Overlaps(geom_1)

## geoprecessing
<geom>.Union(<geom_1>)
<geom>.Intersection(<geom_1>)
<geom>.Difference(<geom_1>)
<geom>.SymmetricDifference(<geom_1>)

# Buffer (returns a new geometry)
<geom>.Buffer(<distance>)

# Are the geometries equal?
<geom1>.Equal(<geom2>)

# Returns the shortest distance between the two geometries
<geom1>.Distance(<geom2>)

# Returns the geometry's extent as a list (minx, maxx, miny, maxy)
<geom>.GetEnvelope()

इन उपकरणों के बारे में अच्छी बात यह है कि आप उन्हें लागू करने के तरीके में बहुत लचीले हैं। उदाहरण के लिए मैंने अपनी कक्षा CreateGeometry()को खरोंच से वेक्टर फाइलें आसानी से बनाने के लिए लिखा था । यदि आपकी रुचि है तो मैं इसे यहां पोस्ट कर सकता हूं, भले ही मुझे लगता है कि यह सवाल के दायरे से परे है।


10

मुझे पता है कि आपका प्रश्न पायथन-केंद्रित है, लेकिन आर में मूल्य सांख्यिकीय विश्लेषण विधियों का खजाना है, जिनमें से कुछ का उपयोग स्थानिक विश्लेषण के लिए किया जा सकता है। यहाँ @Whuberएक अच्छा जवाब दिया गया है कि दो पंक्तियों में एक बॉक्स में एक रैस्टर को कैसे क्लिप किया जाए।


6
इसे पायथन में वापस लाने के लिए, आप आरपीआई लाइब्रेरी का उपयोग कर सकते हैं । आर प्रोग्रामिंग आर प्रोग्रामिंग भाषा के लिए आरपीआई एक बहुत ही सरल, अभी तक मजबूत, पायथन इंटरफ़ेस है। यह सभी प्रकार की R वस्तुओं का प्रबंधन कर सकता है और मनमाने ढंग से R फ़ंक्शन (ग्राफिक फ़ंक्शंस सहित) निष्पादित कर सकता है। आर भाषा से सभी त्रुटियां पायथन अपवादों में बदल जाती हैं। आर सिस्टम के लिए स्थापित किसी भी मॉड्यूल का उपयोग पायथन के भीतर से किया जा सकता है।
रयानडाल्टन

6

मेरा समाधान, त्वरित समाधान, पायथन के साथ GDAL का उपयोग करना है।

आपको

आयात उपप्रकार

कमांड = "gdalwarp -of GTiff -cutline clipArea.shp -cl area_of_interest -crop_to_cutline inData.asc outData.tiff"

subprocess.call ([ 'C: \ अस्थायी \ abc \ notepad.exe'])

(यहां से जवाब दें: GDAL का उपयोग करके वेक्टर परत के साथ कतरन कतरनी )

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


4

यदि आपको PostGIS चलाने में कोई आपत्ति नहीं है तो यह आपके लिए सबसे स्थानिक डाटा प्रोसेसिंग कर सकता है।

पीडीएफ धोखा देती है:

http://www.postgis.us/downloads/postgis20_cheatsheet.pdf

यह अजगर के साथ एकीकृत करता है:

https://publicwiki.deltares.nl/display/OET/Accessing+PostgreSQL+PostGIS+with+Python

क्वांटम GIS या pgAdmin जैसे SPIT जैसे सहायक उपकरणों के साथ आप PostGIS की स्थापना के लिए अच्छी तरह से सुसज्जित हैं। फिर आप अपने स्थानिक डेटा पर PostGIS संचालन को अजगर नियंत्रण का उपयोग कर सकते हैं।


3

मैं एक पर काम कर रहा है खुला स्रोत geoprocessing पुस्तकालय बुलाया WhiteboxTools कि कई अनुप्रयोगों में ArcPy के स्थान पर इस्तेमाल किया जा सकता। वर्तमान में रैस्टर, वेक्टर और LiDAR (LAS) डेटा को संसाधित करने के लिए लगभग 300 उपकरण उपलब्ध हैं , हालाँकि यह योजना अंततः व्हाइटबॉक्स GAT में उपलब्ध सभी 400 से अधिक टूल को पोर्ट करना है । हालाँकि, उपकरण रस्ट प्रोग्रामिंग भाषा (दक्षता के लिए) का उपयोग करके विकसित किए गए हैं, प्रत्येक उपकरण पायथन से कॉल करने योग्य है, जैसा कि निम्नलिखित उदाहरण में है:

from whitebox_tools import WhiteboxTools

wbt = WhiteboxTools()

# Set the working directory. This is the path to the folder containing the data,
# i.e. files sent to tools as input/output parameters. You don't need to set
# the working directory if you specify full path names as tool parameters.
wbt.work_dir = "/path/to/data/"

# The most convenient way to run a tool is to use its associated method, e.g.:
wbt.elev_percentile("DEM.tif", "output.tif", 15, 15)

# You may also provide an optional custom callback for processing output from the
# tool. If you don't provide a callback, and verbose is set to True, tool output
# will simply be printed to the standard output.
def my_callback(value):
    if user_selected_cancel_btn: # Assumes a 'Cancel' button on a GUI
        print('Cancelling operation...')
        wbt.cancel_op = True
    else:
        print(value)

wbt.breach_depressions('DEM.flt', 'DEM_breached.flt', callback=my_callback)

# List all available tools in WhiteboxTools
print(wbt.list_tools())

# Lists tools with 'lidar' or 'LAS' in tool name or description.
print(wbt.list_tools(['lidar', 'LAS']))

# Print the help for a specific tool.
print(wbt.tool_help("ElevPercentile"))

# Want to read the source code for a tool?
# 'view_code' opens a browser and navigates to a tool's  
# source code in the WhiteboxTools GitHub repository
wbt.view_code('watershed')

अधिक विस्तृत जानकारी व्हाइटबॉक्सटॉल्स उपयोगकर्ता पुस्तिका में प्रदान की जा सकती है । पुस्तकालय स्टैंड-अलोन है और इसमें कोई अन्य निर्भरता नहीं है। आपको यहां स्थित छोटी (<5Mb) फ़ाइल डाउनलोड करने की आवश्यकता है । डाउनलोड फ़ाइल में WhiteboxTools exe, whitebox_tools.py स्क्रिप्ट शामिल है, जो लाइब्रेरी के लिए पायथन एपीआई (उपरोक्त स्क्रिप्ट की शीर्ष पंक्ति पर आयात), और उपयोगकर्ता पुस्तिका प्रदान करता है। लाइब्रेरी के साथ इंटरफेस करने के लिए एक बहुत ही बुनियादी टेंकर जीयूआई (wb_runner.py) भी है।

अनुमत एमआईटी लाइसेंस का उद्देश्य व्हाइटबॉक्सटूल को अन्य ओपन-सोर्स जीआईएस के साथ बैक-एंड के रूप में एकीकृत करने की अनुमति देना है; अलेक्जेंडर ब्रू ने व्हाइटबॉक्सटस बैक-एंड के लिए क्यूजीआईएस प्लगइन विकसित किया है । आप आवश्यकतानुसार व्हाइटबॉक्सटूल और आर्कपी से टूल और मिक्सिंग भी कर सकते हैं। लाइब्रेरी अभी भी कुछ प्रायोगिक है, जो गुलेफ के जियोमॉर्फोमेट्री और हाइड्रोजोमैटिक्स रिसर्च ग्रुप के विश्वविद्यालय से बाहर विकसित की गई है , और वर्तमान में पूर्व 1.0 रिलीज है, जिसे उपयोग में लिया जाना चाहिए।


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