पायथन में शेपफाइल कैसे पढ़ें?


23

मेरा सवाल एक बहुभुज आकार में खड़ी रेखाओं का विस्तार है । कृपया पहले उस प्रश्न का संदर्भ लें।

आप जो देखेंगे, वह उपयोगकर्ता-निर्धारित रिक्ति पर, बाउंडिंग बॉक्स के संबंध में ऊर्ध्वाधर रेखाएं बनाने की एक विधि है। मैं समझता हूं कि कतरन के अगले चरण को करने के लिए ओजीआर, फियोना, शेपली आदि का उपयोग किया जा सकता है, लेकिन मुझे उनका उपयोग समझ में नहीं आता है।

मैं बहुभुज आकार की एक पंक्ति कैसे पढ़ूं? प्रत्येक एप्लिकेशन जो Shapely का उपयोग करता है, वह दिखाता है कि लाइनस्ट्रीमिंग, प्वाइंट या बहुभुज कैसे उत्पन्न करें, लेकिन कभी भी किसी मौजूदा आकृति को पढ़ने के लिए नहीं

कृपया कम से कम एक कंकाल संरचना के साथ मेरी सहायता करें ताकि मैं उस पर निर्माण कर सकूं।

जवाबों:


40

1) फियोना , PyShp , ogr या ... geo_interface प्रोटोकॉल (GeoJSON) का उपयोग करके अपनी आकृति आकृति पढ़ें।

फियोना के साथ

import fiona
shape = fiona.open("my_shapefile.shp")
print shape.schema
{'geometry': 'LineString', 'properties': OrderedDict([(u'FID', 'float:11')])}
#first feature of the shapefile
first = shape.next()
print first # (GeoJSON format)
{'geometry': {'type': 'LineString', 'coordinates': [(0.0, 0.0), (25.0, 10.0), (50.0, 50.0)]}, 'type': 'Feature', 'id': '0', 'properties': OrderedDict([(u'FID', 0.0)])}

PyShp के साथ

import shapefile
shape = shapefile.Reader("my_shapefile.shp")
#first feature of the shapefile
feature = shape.shapeRecords()[0]
first = feature.shape.__geo_interface__  
print first # (GeoJSON format)
{'type': 'LineString', 'coordinates': ((0.0, 0.0), (25.0, 10.0), (50.0, 50.0))}

ओगर के साथ:

from osgeo import ogr
file = ogr.Open("my_shapefile.shp")
shape = file.GetLayer(0)
#first feature of the shapefile
feature = shape.GetFeature(0)
first = feature.ExportToJson()
print first # (GeoJSON format)
{"geometry": {"type": "LineString", "coordinates": [[0.0, 0.0], [25.0, 10.0], [50.0, 50.0]]}, "type": "Feature", "properties": {"FID": 0.0}, "id": 0}

2) शेपली ज्यामिति में परिवर्तन ( आकृति फ़ंक्शन के साथ)

# now use the shape function of Shapely
from shapely.geometry import shape
shp_geom = shape(first['geometry']) # or shp_geom = shape(first) with PyShp)
print shp_geom
LINESTRING (0 0, 25 10, 50 50)
print type(shp_geom)
<class 'shapely.geometry.linestring.LineString'>

3) अभिकलन

4) परिणामस्वरूप आकृति को बचाएं


5
मैं सूची में geopandas.read_file("my_shapefile.shp")
जियोपैन्डस जोड़ूंगा

GDAL 2.0 के बजाय osgeo.ogr.Open, का उपयोग करें osgeo.gdal.OpenEx( विवरण )।
केविन

1
ओगर के साथ, मुझे पहली बार जसन के रूप में परिभाषित करना पड़ा कि इसे एक आकृति के साथ आगे संसाधित करने में सक्षम होना चाहिए: 'पहले = json.loads (पहले)'
लियो

11

मुझे यहां जियोपांडास सबसे अच्छा कलाकार लगता है। कोड:

import geopandas as gpd
shapefile = gpd.read_file("shapefile.shp")
print(shapefile)
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.