পাইথনে একটি শেফফিল কীভাবে পড়বেন?


23

আমার প্রশ্নটি বহুভুজ শেফফাইলে উল্লম্ব রেখাগুলির বর্ধন । দয়া করে প্রথমে সেই প্রশ্নটি উল্লেখ করুন।

আপনি যা দেখতে পাবেন তা হ'ল ব্যবহারকারীর দ্বারা নির্ধারিত ব্যবধানে সীমানা বাক্সের সাথে উল্লম্ব রেখা উত্পন্ন করার একটি পদ্ধতি। আমি বুঝতে পারি যে ওজিআর, ফিয়োনা, শেপলি ইত্যাদি ক্লিপিংয়ের পরবর্তী ধাপটি করতে ব্যবহার করা যেতে পারে, তবে আমি তাদের ব্যবহার বুঝতে পারি না।

বহুভুজ শেফফিলের এক লাইনে কীভাবে পড়ব? শেপলি ব্যবহার করে এমন প্রতিটি অ্যাপ্লিকেশন দেখায় যে কীভাবে লাইনস্ট্রিং, পয়েন্ট বা বহুভুজ তৈরি করা যায় তবে কোনও বিদ্যমান শেফফাইল কখনই পড়তে হয় না

দয়া করে কমপক্ষে একটি কঙ্কাল কাঠামো আমাকে সহায়তা করুন যাতে আমি এটির উপরে তৈরি করতে পারি।

উত্তর:


40

1) সঙ্গে আপনার shapefile পড়া Fiona, , 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)])}

পাইএসএইচপি সহ

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 যোগ হবে:geopandas.read_file("my_shapefile.shp")
Joris

GDAL 2.0 হিসাবে, পরিবর্তে osgeo.ogr.Open, osgeo.gdal.OpenEx( বিশদ ) ব্যবহার করুন
কেভিন

1
ওজিআর দিয়ে, আমি প্রথমে জেসনকে জেসন হিসাবে সংজ্ঞায়িত করতে হয়েছিল যাতে এটি আরও সুশৃঙ্খলভাবে আরও প্রক্রিয়া করতে সক্ষম হয়: 'প্রথম = জসন.লোডস (প্রথম)'
লিও

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.