PostgreSQL से dxf फाइलें प्राप्त करना


10

मैंने सफलतापूर्वक PostGIS डेटाबेस में शेपफाइल्स का एक गुच्छा लोड किया है। मैं एसक्यूएल प्रश्नों पर आधारित dxf फ़ाइलों के रूप में विशिष्ट ज्यामिति और परतों को पुनः प्राप्त करने में सक्षम होना चाहूंगा।

मैं PostGIS, GDAL, PostgreSQL और पायथन का उपयोग OSGeo4W सूट से विंडोज पर कर रहा हूं।

मैं कल्पना कर रहा हूं कि मुझे इस तरह से ogr2ogr का उपयोग करना चाहिए:

$ ogr2ogr -sql "SELECT * FROM some_table" -f "dxf" outputfile.dxf -overwrite "PG:dbname=mydb user=dbusername password=dbpassword"

लेकिन जब मैं उचित मूल्यों के साथ ऐसा करता हूं, तो मुझे इस तरह की त्रुटियों की एक श्रृंखला मिलती है:

ERROR 1: DXF layer does not support arbitrary field creation, field 'objectid' not created. 

परत में प्रत्येक विशेषता स्तंभ के लिए एक त्रुटि के परिणामस्वरूप, some_tableलेकिन मुझे एक dxf फ़ाइल मिलती है।

अगर मैंने पहले ही एक .dxf फ़ाइल बनाई है, और मैं ऊपर कमांड को फिर से चुनता हूं ( -overwriteविकल्प सहित ), मुझे इसके बजाय यह त्रुटि मिलती है:

Layer sql_statement not found, and CreateLayer not supported by driver. ERROR 1: Terminating translation prematurely after failed translation from sql statement.

मैंने पहले ही यह सुनिश्चित करने के लिए जाँच कर ली है कि GDAL_DATAपर्यावरण चर सही तरीके से सेट है। (को C:\OSGeo4W\share\gdal)

यह निश्चित रूप से संभव है कि मैं इस कार्य को गलत तरीके से कर रहा हूं क्योंकि मैं इन सभी उपकरणों के लिए नया हूं, इसलिए मैं किसी भी सुझाव और सुझाव के लिए खुला हूं कि कैसे बनाया जाए। SQL प्रश्नों के आधार पर PostgreSQL में संग्रहीत GIS डेटा से .xxf फाइलें।


एक प्रासंगिक लिंक मिला: fwarmerdam.blogspot.com/2010/07/ogr-dxf-upgrad.html
बेंजामिनगोल्डर

जवाबों:


9

बेंजामिन,

DXF (जैसा कि ओजीआर द्वारा माना जाता है) मनमाने ढंग से जीआईएस विशेषताओं का समर्थन नहीं करता है। इसका एक निश्चित स्कीमा है जो दिखता है:

परत: स्ट्रिंग (0.0)
उप-वर्ग: स्ट्रिंग (0.0)
विस्तारित क्षमता: स्ट्रिंग (0.0)
अलंकार: स्ट्रिंग (0.0)
एंटिटीहैंडल: स्ट्रिंग (0.0)

और इनमें से केवल कुछ को वास्तव में लिखने पर जांच की जाती है। सबसे सरल समीक्षक सिर्फ -स्काइपफ़ेलर्स पद्धति का उपयोग करना है, हालांकि ऐसा लगता है कि अनुवाद बिना इसके त्रुटियों के बावजूद आगे बढ़ रहा है।

जैसा कि -overwrite के लिए - यह उन लेयर के लिए लागू होता है जो लेयर डिलीट का समर्थन करते हैं जो DXF नहीं करता है। Ogr2ogr चलाने से पहले मौजूदा DXF फ़ाइल को पहले से हटा दें।


यह शायद अब तक का सबसे अच्छा जवाब है, लेकिन मेरे लिए यह कहना बहुत मुश्किल है कि OGR की dxf एक्सपोर्ट फीचर xxfs को एक्सपोर्ट नहीं करता है। मैं एक जवाब की उम्मीद कर रहा हूं जो वास्तव में मुझे विशेषता डेटा के साथ प्रयोग करने योग्य dxfs मिलता है और त्रुटियों की एक बड़ी सूची नहीं है। मैं देखूंगा कि क्या मैं ओजीआर निर्यात को बेहतर बनाने में मदद कर सकता हूं।
बेंजामिनगोल्डर

2

फ्रैंक और उस्टर शहर के "जीआईएस-कोम्पेनेटेंजेंट्रम" से संकेत के जवाब के साथ (केवल जर्मन में)

http://gis.uster.ch/dokumentation/datenkonvertierung/ogr

मुझे पता चला है कि PostGIS को dxf की तरह किया जा सकता है:

ogr2ogr -f DXF $TITLE$.dxf PG:"dbname='$DBNAME$' host='$HOST$' port='$PORT$' user='$USER$' password='$PASSWORD$'" -sql "select $COLUMN$ as Layer, the_geom from $TABLE$"

Sql- स्टेटमेंट, अंत में, $ COLUMN $ एक परत में हर पंक्ति के लिए बनाया गया। इसलिए $ COLUMN $ जैसे ID या एक प्रासंगिक नाम का चयन करना सबसे अच्छा होगा।

मैंने इसे 2D बहुभुज-तालिका के साथ आज़माया है। Dxf- फाइल ने पॉलीलाइन को बंद नहीं किया है। शायद sql-string में "$ polygon $ as Linetype" जैसा कुछ जोड़ना संभव है।

यदि आप अपनी तालिका से सभी ज्यामिति एक परत पर चाहते हैं तो आप Uster के "GIS-Kompetenzzentrum" कोड का उपयोग कर सकते हैं

ogr2ogr -select '' -f DXF DXF $TITLE$.dxf PG:"dbname='$DBNAME$' host='$HOST$' port='$PORT$' user='$USER$' password='$PASSWORD$' schemas=$SCHEMA$ tables=$TABLE$(the_geom)"

दोनों कथनों पर आप निम्नलिखित विकल्प जोड़ सकते हैं:

-spat xmin ymin xmax ymax

यदि आप एक स्थानिक प्रतिबंध चाहते हैं।


1

फ्रैंक ने जो कहा वह मेरा सुझाव था।
इसमें पहले से ही अपनी परत के नाम के साथ एक dxf बनाएं और टेम्पलेट के रूप में उपयोग करें।

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