पाइथन में शेपफाइल्स को पढ़ने के लिए कई मॉड्यूल हैं, जो आर्कपी से अधिक पुराना है, पाइथन पैकेज इंडेक्स (PyPi) को देखें: शेपफाइल्स । जीआईएस एसई में कई उदाहरण भी हैं (उदाहरण के लिए [पायथन] फियोना की खोज करें )
सभी ज्यामिति, क्षेत्रों और अनुमानों को पढ़ सकते हैं।
लेकिन पायस के रूप में अन्य मॉड्यूल : पायथन स्पेसियल एनालिसिस लाइब्रेरी , कार्टोपी (जो pyshp का उपयोग करते हैं ) या माटप्लोटलिब बेसमैप अन्य चीजों के अलावा शेपफाइल्स भी पढ़ सकते हैं।
फियोना का उपयोग करना सबसे आसान है , लेकिन यदि आप केवल आर्कपी को जानते हैं, तो pyshp का उपयोग करें , क्योंकि ओस्जियो और फियोना को यह आवश्यक है कि GDAL C / C ++ लाइब्रेरी स्थापित हो, GeoPandas को पंडों के मॉड्यूल की जरूरत है और PySAL बहुत बड़ा है (कई, कई अन्य उपचार)
यदि आप केवल एक आकृति की सामग्री को पढ़ना चाहते हैं, तो आपको जटिल चीज़ों की ज़रूरत नहीं है, बस जियो इंटरफ़ेस प्रोटोकॉल (जियोजन्स) का उपयोग भी आर्कपी ( आर्कपी: एशैप ) में किया जाता है
फियोना के साथ (पायथन शब्दकोशों के रूप में):
import fiona
with fiona.open('a_shape.shp') as shp:
# schema of the shapefile
print shp.schema
{'geometry': 'Point', 'properties': OrderedDict([(u'DIP', 'int:2'), (u'DIP_DIR', 'int:3'), (u'TYPE', 'str:10')])}
# projection
print shp.crs
{u'lon_0': 4.367486666666666, u'ellps': u'intl', u'y_0': 5400088.438, u'no_defs': True, u'proj': u'lcc', u'x_0': 150000.013, u'units': u'm', u'lat_2': 49.8333339, u'lat_1': 51.16666723333333, u'lat_0': 90}
for feature in shp:
print feature
{'geometry': {'type': 'Point', 'coordinates': (272070.600041, 155389.38792)}, 'type': 'Feature', 'id': '0', 'properties': OrderedDict([(u'DIP', 30), (u'DIP_DIR', 130), (u'TYPE', u'incl')])}
{'geometry': {'type': 'Point', 'coordinates': (271066.032148, 154475.631377)}, 'type': 'Feature', 'id': '1', 'properties': OrderedDict([(u'DIP', 55), (u'DIP_DIR', 145), (u'TYPE', u'incl')])}
{'geometry': {'type': 'Point', 'coordinates': (273481.498868, 153923.492988)}, 'type': 'Feature', 'id': '2', 'properties': OrderedDict([(u'DIP', 40), (u'DIP_DIR', 155), (u'TYPE', u'incl')])}
Pyshp के साथ (पायथन शब्दकोशों के रूप में)
import shapefile
reader= shapefile.Reader("a_shape.shp")
# schema of the shapefile
print dict((d[0],d[1:]) for d in reader.fields[1:])
{'DIP_DIR': ['N', 3, 0], 'DIP': ['N', 2, 0], 'TYPE': ['C', 10, 0]}
fields = [field[0] for field in reader.fields[1:]]
for feature in reader.shapeRecords():
geom = feature.shape.__geo_interface__
atr = dict(zip(fields, feature.record))
print geom, atr
{'type': 'Point', 'coordinates': (272070.600041, 155389.38792)} {'DIP_DIR': 130, 'DIP': 30, 'TYPE': 'incl'}
{'type': 'Point', 'coordinates': (271066.032148, 154475.631377)} {'DIP_DIR': 145, 'DIP': 55, 'TYPE': 'incl'}
{'type': 'Point', 'coordinates': (273481.498868, 153923.492988)} {'DIP_DIR': 155, 'DIP': 40, 'TYPE': 'incl'}
ऑसगेओ / ओगर के साथ (पायथन शब्दकोशों के रूप में)
from osgeo import ogr
reader = ogr.Open("a_shape.shp")
layer = reader.GetLayer(0)
for i in range(layer.GetFeatureCount()):
feature = layer.GetFeature(i)
print feature.ExportToJson()
{"geometry": {"type": "Point", "coordinates": [272070.60004, 155389.38792]}, "type": "Feature", "properties": {"DIP_DIR": 130, "DIP": 30, "TYPE": "incl"}, "id": 0}
{"geometry": {"type": "Point", "coordinates": [271066.032148, 154475.631377]}, "type": "Feature", "properties": {"DIP_DIR": 145, "DIP": 55, "TYPE": "incl"}, "id": 1}
{"geometry": {"type": "Point", "coordinates": [273481.49887, 153923.492988]}, "type": "Feature", "properties": {"DIP_DIR": 155, "DIP": 40, "TYPE": "incl"}, "id": 2}
GeoPandas के साथ (पंडों डेटाफ्रेम के रूप में)
import geopandas as gp
shp = gp.GeoDataFrame.from_file('a_shape.shp')
print shp
DIP_DIR DIP TYPE geometry
0 130 30 incl POINT (272070.600041 155389.38792)
1 145 55 incl POINT (271066.032148 154475.631377)
2 155 40 incl POINT (273481.498868 153923.492988)
* जियोपान्ड पर ध्यान दें आपको इसके साथ फियोना और जीडीएएल के पुराने संस्करणों का उपयोग करना होगा या यह स्थापित नहीं होगा। GDAL: 1.11.2 फियोना: 1.6.0 जियोपैन्डस: 0.1.0.dev-
वेब और यहां तक कि पुस्तकों पर कई ट्यूटोरियल हैं ( पायथन जियोस्पेशियल डेवलपमेंट , लर्निंग जियोस्पेशियल एनालिसिस विथ पायथन एंड जियोप्रोसेसिंग विद पायथन , प्रेस में)
अधिक आम तौर पर, यदि आप आर्किपी के बिना पायथन का उपयोग करना चाहते हैं, तो पायथन का उपयोग करके शेपफाइल के सरल विषयगत मानचित्रण को देखें?