পাইথন এবং জিডিএল সহ ফাইল জিওডাটাবেজে ফিচার ক্লাস কীভাবে অ্যাক্সেস করবেন?


21

আমি পাইথন + জিডিএল ব্যবহার করে কোনও ইএসআরআই ফাইল জিওডাটাবেসে ভেক্টর ডেটাসেট অ্যাক্সেস করার চেষ্টা করছি। আমি জিওডিএল ফাইল জিওডাটাবেস এপিআই সহ সফলভাবে সংকলন করেছি। ফাইলজিডিবি ড্রাইভার প্রবেশ করার পর থেকে সঠিকভাবে কাজ করছে

ogrinfo --formats

ফাইলজিডিবি ড্রাইভার এবং প্রবেশ করানো দেখায়

ogrinfo myfilegdb.gdb 

আমাকে ডাটাবেসের সামগ্রীতে সঠিক তথ্য দেয়।

তবে পাইথনে কীভাবে সামগ্রীটি অ্যাক্সেস করা যায় তা আমি খুঁজে পাচ্ছি না। একটি শেফফিল অ্যাক্সেসের জন্য, আমি লিখব:

driver = ogr.GetDriverByName('ESRI Shapefile')
ds = driver.Open('shapefile.shp', 0)

কোনও ফাইলজিডিবি বৈশিষ্ট্য শ্রেণিতে অ্যাক্সেস করার সময় আমি কমান্ডগুলি ব্যবহার করে ধরে নেব:

driver = ogr.GetDriverByName('FileGDB')
ds = driver.Open('myfilegdb.gdb/feature_class', 0)

এটি ডেটা সেটটি সনাক্ত / সনাক্ত করতে না পারায় এটি কাজ করে বলে মনে হচ্ছে না। কেউ কি জানেন যে কীভাবে কোনও ইএসআরআই ফাইলজিডিবি থেকে পৃথক বৈশিষ্ট্য শ্রেণি কল করা যায়।

আমি উবুন্টু 12.04 x64 এ পাইথন 2.7, জিডিএল 1.9.1, ফাইলজিডিবি এপিআই 1.2 ব্যবহার করছি। কোন পরামর্শের জন্য ধন্যবাদ!


আপনি কি আমাকে ফাইলজিডিবি ড্রাইভারের জন্য ওজিআর ইনস্টল করার জন্য কিছু ধারণা দিতে পারেন?
গিজার

উত্তর:


18

আপনি বেশিরভাগ ওখানেই থাকেন. এটি উইন্ডোজ 7, ​​পাইথন 2.6.5 32 বিট এবং জিডিএল 1.9.0 এ রয়েছে:

>>> from osgeo import ogr
>>> driver = ogr.GetDriverByName("FileGDB")
>>> ds = driver.Open(r"C:\temp\buildings.gdb", 0)
>>> ds
<osgeo.ogr.DataSource; proxy of <Swig Object of type 'OGRDataSourceShadow *' at 0x02BB7038> >
>>> ds.GetLayer("buildings")
<osgeo.ogr.Layer; proxy of <Swig Object of type 'OGRLayerShadow *' at 0x02BB7050> >
>>> b = ds.GetLayer("buildings")
>>> sr = b.GetSpatialRef()
>>> sr
<osgeo.osr.SpatialReference; proxy of <Swig Object of type 'OSRSpatialReferenceShadow *' at 0x02BB7080> >
>>> sr.ExportToProj4()
'+proj=utm +zone=15 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs '
>>>

আপনি একবার এফজিডিবি খুললে, তারপরে GetLayerআপনার ফিচারক্লাসটি পেতে ব্যবহার করুন ।


একবার আপনি যখন জানলেন এটি এতটা যৌক্তিক বলে মনে হচ্ছে :-) আপনাকে অনেক ধন্যবাদ, আপনার সমাধানটি কৌশলটি করে।
নিলস

6

আমি যুক্ত করতে চাই যে "ফাইলজিডিবি" এমন একটি মালিকানাধীন ড্রাইভার যা আপনার সাথে জিডিএল প্যাকেজ http://www.gdal.org/drv_filegdb.html অন্তর্ভুক্ত নাও হতে পারে । এর ফলে GetDriverByNameফিরে আসে None

এছাড়াও "ওপেনফাইলজিডিবি" ড্রাইভার রয়েছে যা কেবল পঠিত এবং এটি ডিফল্টরূপে অন্তর্ভুক্ত করা হয়েছে http://www.gdal.org/drv_openfilegdb.html

>>> from osgeo import ogr
>>> driver = ogr.GetDriverByName("OpenFileGDB")

3

আপনি ফিয়োনা এবং জিওপ্যান্ডাস ব্যবহার করলে অনেক সহজ এবং স্বজ্ঞাত

import fiona 
import geopandas as gpd

# Get all the layers from the .gdb file 
layers = fiona.listlayers(gdb_file)

for layer in layers:
    gdf = gpd.read_file(gdb_file,layer=layer)
    # Do stuff with the gdf

দ্রষ্টব্য: ফিয়ানা জিডাল ব্যবহার করে এবং জিওপ্যান্ডাস ফিয়োনা ব্যবহার করে

পাইথনে জিওডাটাবেস ফাইলের স্তরগুলির নাম পড়াও দেখুন


পূর্ব-প্রয়োজনীয়তা: পিপ ইনস্টল "GDAL-3.0.2-cp36-cp36m-win_amd64.whl" এখানে দেখুন lfd.uci.edu/~gohlke/pythonlibs , পিপ ইনস্টল চাকা, পিপউইন ইনস্টল নিম্পি, পিপউইন ইনস্টল প্যান্ডস , পিপউইন সুদৃ install়ভাবে ইনস্টল করুন, পিপউইন ইনস্টল করুন জিডিএল, পিপউইন ইনস্টল ফিয়োনা, পিপউইন ইনস্টল পিপ্রোজ, পিপউইন ইনস্টল সিক্স, পিপউইন ইনস্টল আরটিরি, পিপউইন ইনস্টল জিওপ্যান্ডাস, চেক অজগরটি আপনার পরিবেশের পথে রয়েছে, জিডিএল সিপিএক্স-তে আপনার পাইথনের সংস্করণ দেখায় 32-বিট সিস্টেমে 32 বিট ব্যবহার করা হয়, কমা মানে একটি নতুন লাইন
মোহসেন এইচএস
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.