फियोना में FileGDB (Esri फ़ाइल gdb API) ड्राइवर के लिए समर्थन कैसे जोड़ें?


13

उस पर कई सवाल उठे हैं, लेकिन उनमें से किसी ने भी मेरी समस्या का समाधान नहीं किया है।

मेरे पास एक मशीन है:

  • विंडोज 7 x64
  • पायथन 3.4.3 x64
  • गदल स्थापित gdalinfo --version --> GDAL 1.11.4, released 2016/01/25:; GDAL एक पहिया से स्थापित किया गया था GDAL-1.11.4-cp34-none-win_amd64.whlसे यहाँ

GDAL में स्थापित है C:\Python34\Lib\site-packages\osgeo। वहाँ मेरे पास गदल और ऑग और .pyd फ़ाइलों के लिए .exe फ़ाइलों का एक गुच्छा है।

  • fiona इंस्टॉल: एक व्हील Fiona-1.6.3-cp34-none-win_amd64.whlसे, उसी वेबसाइट से इंस्टॉल किया गया था ।

मैं इस कोड को चलाने में सक्षम हूं और यह सफलतापूर्वक निष्पादित होता है:

import gdal
import ogr
from gdalconst import *

shp = r"C:\Data\GIS\PTS.shp"
driver = ogr.GetDriverByName('ESRI Shapefile')

dataset = driver.Open(shp)    
layer = dataset.GetLayer()
layer.GetFeatureCount()    
schema = layer.schema
fields = [field.GetName() for field in schema]    
feature = layer.GetNextFeature()

मैं ओजीआर प्रारूप प्राप्त करने में भी सक्षम हूं: ogrinfo --formatsविंडोज सेमी में उनमें से एक गुच्छा प्रिंट करता है (हालांकि वहां कोई फ़ाइलगीडीबी नहीं है)।

मैं इस कोड को चलाने में सक्षम हूं और यह सफलतापूर्वक निष्पादित होता है:

import fiona
with fiona.drivers():
  with fiona.open(path=r'C:\Data\GIS\TemplateData.gdb', driver='OpenFileGDB') as source:
    print(source.meta)

हालाँकि, यह कोड नहीं चलेगा:

with fiona.drivers():
    with fiona.open(path=r'C:\Data\GIS\TemplateData.gdb', driver='FileGDB') as source:
        print(source.meta)

क्योंकि मेरे पास Esri फ़ाइल GDB संकलित लाइब्रेरी नहीं है जो आवश्यक हैं।

मैंने Esri डाउनलोड पेजFileGDB_API_VS2012_1_3.zip से डाउनलोड और अनपैक किया है । जैसा कि मैंने समझा, कुछ भी संकलित करने की आवश्यकता नहीं है क्योंकि डडल पहले से ही है।

Esri फ़ाइल GDB API के dll को पंजीकृत करने की सही प्रक्रिया क्या है जो मेरे वातावरण में फियोना में उनका उपयोग करने में सक्षम हो?


अद्यतन: (ल्यूक के जवाब पर आधारित)

मैंने Esri डाउनलोड पेजFile Geodatabase API 1.4 version for Windows (Visual Studio 2010) से डाउनलोड किया है । मैं करने के लिए नकल की । अब मेरे पास यहां दो फाइलें हैं, और ।FileGDB_API_VS2010_1_4\bin64\FileGDBAPI.dllC:\Python34\Lib\site-packages\osgeoogr_FileGDB.dllFileGDBAPI.dll

मैंने एक विंडोज वैरिएबल बनाया है GDAL_DRIVER_PATH : C:\Python34\Lib\site-packages\osgeo\gdalplugins। में PATHचर, मैं के अलावा कुछ अजगर विशिष्ट की जरूरत नहीं है C:\Python34\Lib\site-packages\osgeo

अब जब ogrinfo --formatsमैं दौड़ रहा हूं -> "FileGDB" (read/write)और फाइलगीडी चालक के साथ काम करने के लिए पायथन कोड का उपयोग करने में सक्षम हूं।


1.4 फ़ाइल जियोडैटेबेस एपीआई अब एक लोन्नेन्ग समय के लिए जारी किया गया है । वास्तव में 1.3 का उपयोग करने का कोई कारण नहीं है।
विन्स

@ ल्यूक, धन्यवाद, लेकिन मुझे gbb तक लिखने की आवश्यकता है। Afaik, आप केवल OpenFileGDB के साथ पढ़ सकते हैं ... कोई विशिष्ट लिंक या डॉक्टर पृष्ठ कि संकलन के साथ कैसे प्राप्त करें और dll (विंडोज चर आदि के माध्यम से) कैसे इंगित करें? बहुत मददगार होगा।
एलेक्स टेरेशेंकोव

@ विन्स, मुझे १.४ या किसी अन्य संस्करण का उपयोग करने में कोई आपत्ति नहीं है जो मुझे फ़ाइल gdb को संपादित करने की अनुमति देगा :) मुझे डॉक्स पृष्ठ की कमी है / स्पष्ट निर्देशों के साथ कि यह कैसे करने में सक्षम होना चाहिए।
एलेक्स टेरेशेंकोव

@AlexTereshenkov जैसा कि आप 64 बिट पायथन का उपयोग कर रहे हैं, Esir bin64 \ FileGDBAPI.dll को [python install dir]\Lib\site-packages\osgeoडायर को कॉपी करें जैसा कि मैंने अपने उत्तर में निर्दिष्ट किया था, न कि आपके द्वारा संपादित किए गए gdalplugins डायर का। केवल ड्राइवर प्लगइन्स उस निर्देशिका में जाते हैं, न कि थर्ड पार्टी डीएलएस।
user2856

1
@AlexTereshenkov, ogr_FileGDB.dll FileGDB ड्राइवर है (OpenFileGDB नहीं जो गदल / ogr में बनाया गया है)। यह dll GDAL / OGR ड्राइवर कोड से संकलित किया गया है । इसे GDAL_DRIVER_PATH env var द्वारा निर्दिष्ट निर्देशिका में होना चाहिए।
user2856

जवाबों:


9

Gohlke GDAL / OGR पहिया FileGDB चालक एक प्लगइन के रूप में संकलित भी शामिल है।

FileGDB ड्राइवर काम करने के लिए:

  1. Esri bin64 \ FileGDB.dll को कॉपी करें [python install/virtualenv dir]\Lib\site-packages\osgeo(यदि 32 बिट पायथन का उपयोग कर रहे हैं तो bin \ FileGDB.dll का उपयोग करें)। FileGDB.dll को gdalplugins निर्देशिका में कॉपी न करें।
  2. GDAL_DRIVER_PATH पर्यावरण चर सेट करें, या तो:
    • मैन्युअल रूप से; या
    • [python install/virtualenv dir]\Lib\site-packages\osgeo\__init__.py10 पंक्ति संपादित करें और असहज करें ।
      # uncomment the next line to enable plugins
      os.environ['GDAL_DRIVER_PATH'] = os.path.join(os.path.dirname(__file__), 'gdalplugins')

FileGDB ड्राइवर के साथ एक GDB खोलना अब काम करना चाहिए।

>>> import fiona
>>> with fiona.drivers():
...     with fiona.open(path=r'C:\Temp\Default.gdb', driver='FileGDB') as source:
...         print(source.meta)
...
{'crs': {'init': u'epsg:4326'}, 'driver': 'FileGDB', 'crs_wkt': u'GEOGCS["WGS 84",DATUM["WGS_1984",SPHEROID["WGS 84",6378137,298.257223563,AUTHORITY["EPSG","7030"]],AUTHORITY["EPSG","6326"]],PRIMEM["Greenwich",0,AUTHORITY["EPSG","8901"]],UNIT["degree",0.01
74532925199433,AUTHORITY["EPSG","9122"]],AUTHORITY["EPSG","4326"]]', 'schema': {'geometry': 'MultiPolygon', 'properties': OrderedDict([(u'SHAPE_Length', 'float'), (u'SHAPE_Area', 'float')])}}
>>>

ध्यान दें:

पायथन 2.7 का उपयोग कर मैं केवल FileGDB प्लगइन को FileGDB API v1.3 (MSVC 2008) के साथ काम कर सकता है। v.1.4 सेगफॉल्ट्स अजगर के रूप में। मुझे लगता है कि यह इसलिए है क्योंकि अजगर और गोहलके द्वारा दी गई GDAL और फियोना लाइब्रेरी को MSVC 2008 और v। 1.4 के साथ संकलित किया गया है और MSVC 2010 (और बाद में) के साथ संकलित किया गया है।

FileGDB API v1.4 Python 3.4 और गोहल्के द्वारा प्रदान की जाने वाली GDAL और फियोना लाइब्रेरी के साथ ठीक काम करता है जो MSVC 2010 के साथ संकलित हैं।


मैं इसे काम करने के लिए github.com/Esri/file-geodatabase-api/tree/master/… पर स्थित bin64\FileGDBAPI.dllसे कॉपी करूंगा (पायथन 3.5 64 बिट में)FileGDB_API_1_5_1-VS2010.zipstep 1
मैटीजेन

geopandasमिनिकोंडा कमांड लाइन का उपयोग करके मेरे गदल को स्वचालित रूप से स्थापित किया गया था conda install geopandas। में __init__.pyलाइन 10 पहले से ही uncommented है, इसलिए मुझे नहीं लगता कि यह लाइन आप की बात कर रहे है। इसके अलावा कोई gdalpluginsफाइल नहीं है
user32882

@ user32882 ये निर्देश कोंडा स्थापित गदल के लिए नहीं हैं ...
user2856

मैं इसे कोंडा के लिए कैसे स्थापित कर सकता हूं? क्या यह संभव है?
user32882

4

प्रमुख जानकारी यहाँ है:

मैं OGR प्रारूप प्राप्त करने में भी सक्षम हूं: ogrinfo --formats विंडोज cmd में उनमें से एक गुच्छा प्रिंट करता है (हालांकि वहां कोई FileGDB नहीं है)।

यह मुझे बताता है कि आपका GDAL_DRIVER_PATHपर्यावरण चर सेट नहीं है। Https://trac.osgeo.org/gdal/wiki/FileGDB#Testingthedriver पर निर्देश देखें । एक बार "FileGDB" ogrinfo --formats(या fio env --formats) में दिखाया गया है , तो आप जाने के लिए अच्छा होगा।


धन्यवाद। आश्चर्य की बात है कि आपके पास जीआईएसई पर सवालों के जवाब देने का समय है - आप शायद फियोना, सुडौल और अन्य सामान के साथ सुपर व्यस्त हैं। बहुत अच्छी बातें जो आपने लिखी हैं, कुदोस। मुझे पता है कि मेरे पास FileGDB ड्राइवर नहीं है इसलिए पूछ रहा हूं कि यह कैसे करना है। मैंने वह पृष्ठ देखा है जिसका आप उल्लेख करते हैं, यह कहता है कि किसी को इसकी आवश्यकता है Compile GDAL with the FGDB section commented । मेरे पास GDAL स्रोत नहीं है; मैंने इसे केवल पहिये से स्थापित किया है, इसलिए मुझे लगता है कि वे चरण मेरे मामले में लागू नहीं हैं। मझे यहां से कहां जाना चाहिए?
एलेक्स टेरासेनकोव

1
GDAL_DRIVER_PATHचर की कुंजी है। Trac.osgeo.org/gdal/wiki/ConfigOptions#GDAL_DRIVER_PATH पढ़ें और यदि वह आपको सही रास्ते पर सेट नहीं करता है, तो lists.osgeo.org/pipalail/gdal-dev/2014-May/039066.html पर धागा देखें। ।
sgillies

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

यह बिल्कुल सही उत्तर है। चारों ओर स्थापना को बदलने की आवश्यकता नहीं है, बस सही रास्ते सेट करें!
बेंजामिन

1

फ़ाइलों की प्रतिलिपि FileGDBAPI.dll \ Program Files \ QGIS 2.18 \ बिन और: में फ़ोल्डर सी ogr_FileGDB.dll सी फ़ोल्डर में: \ Program Files \ QGIS 2.18 \ बिन \ gdalplugins मेरे लिए काम कर देता है। यहां एक दस्तावेज है जो उनके उपयोग की व्याख्या करता है

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