आकृति आकृति को CSV में बदलें जिसमें विशेषताएँ और ज्यामिति शामिल हैं?


21

मेरे पास 60k + प्रविष्टियों के साथ एक आकृति है, जो सभी समान विशेषताओं (एकर योग, भूमि के नाम, कर आईडी #, आदि) के साथ बहुभुज हैं। आखिरकार मुझे इन सभी विशेषताओं और उनकी संगत ज्यामिति (KML संगत xyz प्रारूप में, यानी डब्ल्यूकेटी प्रारूप नहीं है) के साथ एक सीएसवी फ़ाइल की आवश्यकता है।

मुझे पता है कि मैं .dbf फ़ाइल को एक्सेल में खोल सकता हूं और विशेषताएँ प्राप्त कर सकता हूं। मुझे यह भी पता है कि मैं क्यूजीआईएस में शेपफाइल खोल सकता हूं और एक्सेल में डेटा कॉपी कर सकता हूं, जिसमें मुझे एट्रिब्यूट्स और डब्ल्यूकेटी ज्योमेट्री मिलती है।

क्या विशेषता और Google धरती के अनुकूल ज्यामिति के साथ आकार को CSV (Excel में ओपन करने योग्य) में बदलने का एक सरल तरीका है?


अपने विनिर्देशों को पूरा करने के लिए, एक आवेदन या एक स्क्रिप्ट का निर्माण करना होगा। मुझे नहीं लगता कि यह मुश्किल है, लेकिन मुझे नहीं लगता कि यह गैर-तुच्छ भी है। अगर मैं इसे करने के लिए तैयार था, तो मैं शायद इस तरह की नौकरी के लिए 1 सप्ताह के पूर्णकालिक का अनुमान लगाऊंगा।
स्टीफन क्वान

3
धन्यवाद, यह मददगार है। यह हालांकि पागल की तरह है। यदि मेरी फ़ाइल का आकार इतना बड़ा नहीं होता तो मैं इसे Google के माध्यम से स्वचालित रूप से कर सकता था। मैं आमतौर पर Google धरती में .shp आयात करके और .kml के रूप में बचत करके यह कैसे करता हूं। मैं तब .kml को Google Fusion Tables (FYI: Google Fusion Tables में 100 mb अपलोड सीमा) में अपलोड करता हूं और .csv को निर्यात करता हूं। फिर मैं .csv के साथ खेल सकता हूँ, लेकिन मैं चाहता हूँ - विशेषताएँ बदलें, नए बहुभुज जोड़ें जिनके पास मेरे लिए निर्देशांक हैं, आदि-आदि - और फिर मैं नए सहेजे गए .csv को Google फ़्यूज़न टेबल्स में फिर से लोड करता हूँ, .kml पर निर्यात करें , और Google धरती में खोलें।
रिक्

तो मुझे लगता है कि सवाल तो यह हो जाता है ... मैं एक .shp फ़ाइल को दो भागों में कैसे विभाजित करूं? यह मुझे 100 एमबी सीमा के तहत व्यक्तिगत .kml फाइलें प्राप्त करने की अनुमति देगा और मैं परिवर्तित करने के लिए उपर्युक्त विधि का उपयोग कर सकता हूं।
22

1
मैंने नीचे पूछे गए प्रश्न का उत्तर दिया है, लेकिन अभी आपकी टिप्पणी देखी है। आपको सीएसवी की आवश्यकता क्यों है? जीआईएस (आपने कहा था कि आपके पास क्यूजीआईएस है) में नए पॉलीगोन इत्यादि को जोड़ते हुए आपकी विशेषता संपादन क्यों नहीं करते, और फिर अपने अंतिम केएमएल को निर्यात करें?
user2856

@Rikk - आपकी टिप्पणी में सवाल के जवाब में: शेपफाइल को विभाजित करने का एक सरल तरीका यह होगा कि आप अपने शेपफाइल के हिस्से पर एक स्थानिक चयन करें और फिर अपनी परत को राइट-क्लिक करें और "एक्सपोर्ट" चुनें। आप तब चयनित सुविधाओं को एक नए, छोटे आकार में निर्यात कर सकते हैं। यह किसी भी तरह से वैज्ञानिक नहीं है, लेकिन यह सरल है। यदि आप अधिक संगठित दृष्टिकोण चाहते हैं तो वैकल्पिक रूप से आप कुछ विशेषताओं का चयन कर सकते हैं।
रडार

जवाबों:


28

यहाँ एक सरल स्क्रिप्ट है जो OGR अजगर बाँधने का उपयोग करता है :

import ogr,csv,sys

shpfile=r'C:\Temp\test.shp' #sys.argv[1]
csvfile=r'C:\Temp\test.csv' #sys.argv[2]

#Open files
csvfile=open(csvfile,'wb')
ds=ogr.Open(shpfile)
lyr=ds.GetLayer()

#Get field names
dfn=lyr.GetLayerDefn()
nfields=dfn.GetFieldCount()
fields=[]
for i in range(nfields):
    fields.append(dfn.GetFieldDefn(i).GetName())
fields.append('kmlgeometry')
csvwriter = csv.DictWriter(csvfile, fields)
try:csvwriter.writeheader() #python 2.7+
except:csvfile.write(','.join(fields)+'\n')

# Write attributes and kml out to csv
for feat in lyr:
    attributes=feat.items()
    geom=feat.GetGeometryRef()
    attributes['kmlgeometry']=geom.ExportToKML()
    csvwriter.writerow(attributes)

#clean up
del csvwriter,lyr,ds
csvfile.close()

EDIT: और अपने CSV से KML में परिवर्तित करने के लिए एक और स्क्रिप्ट

import ogr,csv,sys,os
ogr.UseExceptions()

csvfile=r'C:\temp\test.csv' #sys.argv[1]
kmlfile=r'C:\temp\test.kml' #sys.argv[2]

csvreader=csv.reader(open(csvfile,'rb'))
headers=csvreader.next()

ds = ogr.GetDriverByName('KML').CreateDataSource(kmlfile)
lyr = ds.CreateLayer(os.path.splitext(os.path.basename(kmlfile))[0])

for field in headers[:-1]: #skip kmlgeometry
    field_def = ogr.FieldDefn(field)
    print lyr.CreateField(field_def)

for rec in csvreader:
    feat = ogr.Feature(lyr.GetLayerDefn())
    for i,field in enumerate(headers[:-1]): #skip kmlgeometry
        feat.SetField(field, rec[i])
    feat.SetGeometry(ogr.CreateGeometryFromGML(rec[-1]))
    lyr.CreateFeature(feat)

del lyr,ds

क्या आप इस बात का अधिक वर्णन कर सकते हैं कि उन बाइंडिंग का उपयोग कैसे किया जाए जो आपके पाठकों को महत्वपूर्ण जानकारी के बारे में बताए।
एंड्रयू एस

8

यदि आप अपने आकार-प्रकार को स्थानिक में बदलते हैं, तो आपको निम्नलिखित कार्य करने में सक्षम होना चाहिए:

1) आउटपुट का परीक्षण करने के लिए SQL के साथ प्रयोग:

पूर्व।

Col1, col2, col3, AsKml (ज्यामिति_ रंग) का चयन टैब से करें

2) एक बार जब आप परिणाम से संतुष्ट हो जाते हैं, तो आप इसे सीएसवी प्रारूप में निर्यात कर सकते हैं:

/programming/5776660/export-from-sqlite-to-csv-using-shell-script

Spatialite की अधिक जानकारी के लिए:

https://www.gaia-gis.it/fossil/libspatialite/index

स्थानिक SQL कार्य:

http://www.gaia-gis.it/gaia-sins/spatialite-sql-3.0.0.html


3

यदि आप QGIS पर काम कर रहे हैं, तो आप लेयर पर राइट क्लिक करके तुरंत CSV डॉक्यूमेंट जनरेट कर सकते हैं -> Save as -> CSV।

यदि आप आर्कपैम के साथ काम कर रहे हैं, तो आप केएमएल को टूल लेयर टू केएमएल (प्रोग्राम में सर्च विकल्प पर जाएं) का उपयोग करके निर्यात कर सकते हैं । कुछ कारणों से यह KML के बजाय KMZ उत्पन्न करता है (कम से कम मेरे मामले पर ऐसा ही हुआ)।

KMZ को KML में बदलने के लिए:

  • अपनी KMZ फ़ाइल को Google धरती पर आयात करें और अपनी परत पर राइट क्लिक करें और इसे KML के रूप में सहेजें
  • QGIS खोलें और KML फ़ाइल को खींचें और छोड़ें - यह स्वचालित रूप से परत को लोड करेगा (> QGIS 2.10 PISA)
  • फ़ाइल पर राइट क्लिक करें और इसे CSV के रूप में सहेजें

यह प्रक्रिया लंबी है यदि आप आर्कजीआईएस के साथ काम कर रहे हैं लेकिन क्यूजीआईएस में यह कुछ ही समय में किया जा सकता है। आपको किसी भी स्थिति में क्यूजीआईएस स्थापित करना होगा।


QGIS के लिए अपने समाधान का परीक्षण किया और यह काम नहीं करता है। सीएसवी के रूप में सहेजें स्थानिक घटक को संरक्षित नहीं करता है।
फिलिप श्वार्ज़

क्यूजीआईएस आपको निर्यात के दौरान डब्ल्यूकेटी का चयन करने का विकल्प देता है - यह आकृति फ़ाइल में बाकी सुविधाओं के साथ-साथ डब्ल्यूकेटी प्रारूप में ज्यामिति (स्थानिक घटक) का निर्यात करता है।
कोजियर

QGIS 3.0 से आप के अंतर्गत "परत विकल्प" निर्यात बातचीत में "ज्यामिति" ड्रॉपडाउन सूची के लिए दिखाई देगा, और चुनें AS_XY, AS_XYZयाAS_WKT
लियो

2

कमांड लाइन पर आप ogr2ogrइस तरह का उपयोग कर सकते हैं :

ogr2ogr -f CSV output.csv input.shp -lco GEOMETRY=AS_XYZ

lco"परत निर्माण विकल्प" के लिए है, मुझे लगता है। अन्य उपलब्ध विकल्प यहां प्रलेखित हैं: http://www.gdal.org/drv_csv.html


लियो, मुझे "एरर 1 नहीं मिला" अनुरोधित परत 'GEOMETRY = AS_XYZ'। मैं फ़ाइल को क्यूजीआईएस में ला सकता हूं और स्पष्ट रूप से एक वेक्टर युक्त देश की रूपरेखा देख सकता हूं।
एंड्रयू एस

-1

'जियोप्रोसेसिंग मॉडल और स्क्रिप्ट टूल गैलरी' पर एक उपकरण है जो वह करता है जो आप खोज रहे हैं। यह एक्सेल या सीएसवी को निर्यात कर सकता है।

http://resources.arcgis.com/gallery/file/geoprocessing/details?entryID=95009B25-1422-2418-7FB5-B8638ECB2FA9


1
मुझे इस पर एक नज़र थी, यह किसी भी प्रारूप में ज्यामिति का निर्यात नहीं करता है, अकेले केएमएल को चलो।
user2856

-1

बस आर्क मैप में रूपांतरण टूल पर जाएं। फिर एक्सेल करने के लिए टेबल पर जाएं। एक एक्सेल फाइल बनेगी। उस एक्सेल डॉक को .csv फ़ाइल में बदलें

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