मैं एक्स, वाई कॉलम के साथ एक्सेल फाइल को शेपफाइल में कैसे बदल सकता हूं?


26

मैं एक्स, वाई कॉलम के साथ एक्सेल फाइल को पॉइंट शेपफाइल में कैसे बदल सकता हूं?

शेपफाइल के सही निर्माण के अलावा कुछ कुछ वैकल्पिक आवश्यकताएं हैं:

  1. कॉलम प्रकार (एक्सेल के प्रारूप विनिर्देश के अनुसार) को बनाए रखा जाना चाहिए (विशेष रूप से तिथि प्रकार)
  2. कॉलम के नाम हेडर से लिए जाने चाहिए
  3. मैं कमांड-लाइन से ऐसा करना चाहूंगा
  4. अगर मैं एक तीसरे कॉलम में अंक के लिए विषम स्थानिक संदर्भ शामिल कर सकता हूं तो मुझे बहुत खुशी होगी :)

जवाबों:


24

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

यह मानते हुए कि आपके पास ऐसा कुछ है example.csv:

Lat,Long,Year,Name
34.0,-120.0,2010-05-01,Off Santa Rosa Island

आप example.vrtनिम्नानुसार एक वीआरटी बना सकते हैं :

<OGRVRTDataSource>
    <OGRVRTLayer name="example">
        <SrcDataSource>example.csv</SrcDataSource>
        <GeometryType>wkbPoint</GeometryType>
        <LayerSRS>WGS84</LayerSRS>
        <GeometryField encoding="PointFromColumns" x="Long" y="Lat"/>
    </OGRVRTLayer>
</OGRVRTDataSource>

GDAL 1.7 में शुरू करके, आप इसके अतिरिक्त <Field>तत्व का उपयोग करके फ़ील्ड के डेटाटाइप्स को निर्दिष्ट कर सकते हैं <OGRVRTLayer>, जैसे:

    <Field name="date" src="Year" type="Date" />

ध्यान रखें कि शेपफाइल्स DBASE IV प्रारूप में विशेषता रखते हैं जिसमें एक्सेल की तुलना में डेटा प्रकारों में लचीलापन कम है। एक बार जब आप अपनी वीआरटी फ़ाइल निर्दिष्ट कर लेते हैं, तो आप डेटा को शेपफाइल में बदलने के लिए सामान्य ओजीआर टूलचैन का उपयोग कर सकते हैं:

ogr2ogr -f "ESRI Shapefile" example.shp example.vrt

दुर्भाग्य से, # 4 संभव नहीं है - आकार-निर्धारण विनिर्देश एकल प्रक्षेपण ( example.prjअंतिम चरण के बाद यहां देखने योग्य ) की अनुमति देता है ।


इसका एकमात्र नकारात्मक पक्ष यह है कि मुझे <Field>टैग लिखने के लिए प्रोग्राम-रूप से कॉलम के डेटा-प्रकार का पता लगाना होगा । मुझे लगता है कि मैं अपने दम पर एक पता
लगाऊंगा

सही। यदि आप एक स्वचालित समाधान चाहते हैं और ArcGIS तक पहुँच चाहते हैं, तो आप इसके बजाय Add XY Coordinates tool tinyurl.com/38jm55k के साथ कर सकते हैं , जो आपके लिए उस चरण को करना चाहिए।
स्कव

एक महत्वपूर्ण विचार आपकी एक्सेल फाइल को पहले ESRI शेपफाइल के लिए उपयुक्त फॉर्मेट में प्राप्त कर रहा है - कॉलम के नामों की सीमाएं, नामों की लंबाई और यदि आप X X टूल का उपयोग उस तरीके से कर रहे हैं जिसमें ईएसआरआई फ़ील्ड प्रकार को स्वचालित करता है जिसके कारण हो सकता है मुद्दे। webhelp.esri.com/arcgisdesktop/9.2/...
एसपीजी

3
ठीक से स्वरूपित vrt फ़ाइल बनाने में मदद करने के लिए ऑनलाइन सेवा: vrtbuilder.appspot.com
मैट

9

आप पाठ फ़ाइल लोड करने के लिए QGIS (http://qgis.org ) के साथ आने वाले डिलीट किए गए टेक्स्ट प्लगइन का उपयोग कर सकते हैं और फिर इसे शेपफाइल के रूप में सहेज सकते हैं।


मैं अक्सर इस उपकरण का उपयोग कर पार्सर त्रुटियों से ग्रस्त हूं। कोई सुझाव?
चिह्नित करें

1
क्या आपके पास विशिष्ट उदाहरण हैं?
gsherman

@ चिह्न - मुझे इन त्रुटियों के रूप में अच्छी तरह से मिलता है, और इसके कारण आमतौर पर एमएस एक्सेल को सीएसवी को हैंडल करने के कारण
dassouki

6

हालांकि कमांड लाइन से नहीं, आप आर्कजीआईएस ऐप के भीतर ऐसा कर सकते हैं। 9.3.1 के बाद से, बस XLS को सीधे ArcMap में जोड़ें। XLS से एक XY Event Layer बनाएं (यानी X, Y Columns चुनें और ur स्थानिक संदर्भ सेट करें) फिर इस XY Event Layer को एक नए .shp पर निर्यात करें। यह आसानी से एक साधारण अजगर / VBA स्क्रिप्ट या मॉडलबिल्डर में एक मॉडल के साथ स्वचालित हो सकता है। । यदि आपको अधिक जानकारी की आवश्यकता है, तो इस मूल वर्कफ़्लो पर मदद करने में खुशी होगी।


1
यदि आप पायथन का उपयोग करते हैं, तो आप कमांड लाइन से जियोप्रोसेसिंग टूल चला सकते हैं।
jswise

6

मैंने खोज की लेकिन वेब मदद में प्रदर्शन XY डेटा पर एक मदद पृष्ठ नहीं खोज सका लेकिन यह प्रक्रिया सरल है।

  1. उपयोग डेटा जोड़ें (या खींचें और सूची खिड़की से ड्रॉप) (स्प्रेडशीट के भीतर) अपने वर्कशीट के लिए ब्राउज़ करने के लिए और अपने नक्शे में जोड़ने
  2. ईवेंट परत जोड़ने के लिए प्रदर्शन XY डेटा चुनने और उपयोग करने के लिए राइट-क्लिक करें
  3. इवेंट लेयर पर राइट-क्लिक करें और डेटा का उपयोग करें। एक आकृति बनाने के लिए डेटा निर्यात करें

आपको ऐसा करने के लिए केवल ArcGIS (For) डेस्कटॉप के ArcView (बेसिक) लाइसेंस स्तर की आवश्यकता है।


क्या मुझे उन शीर्ष स्तंभों के साथ कुछ भी करने की आवश्यकता है जो डेटा का हिस्सा नहीं हैं?
ज़ोरान

कौन से दो कॉलम आपके डेटा का हिस्सा नहीं हैं? मैंने जिस प्रक्रिया का वर्णन किया है, जो भी बिंदु ज्यामिति उत्पन्न करने के लिए आप चुनते हैं, उनमें से जो भी लंबे / लम्बे कॉलम का उपयोग करना चाहिए, और मुझे लगता है, उनमें से बाकी विशेषताओं को संग्रहीत करें। सबसे अच्छी बात यह है कि इसे आज़माएँ और यदि परिणाम अपेक्षा के अनुरूप नहीं है, तो अपने देखे हुए बनाम उम्मीद का वर्णन करें।
PolyGeo

मुझे लगता है कि मैं दो के लिए शीर्ष को गलत समझता हूं - और आप मान रहे हैं कि शीर्ष पंक्ति (शीर्षकों की)। उन्हें केवल डेटा जोड़ने के बाद फ़ील्ड नाम बनना चाहिए।
PolyGeo

सुनिश्चित नहीं है कि यह अभी भी मामला है, लेकिन एक्सेल फ़ाइल में हेडर नामों में स्पेस एक्स एक्सवाई के लिए एक वास्तविक सिरदर्द हुआ करता था।
चाड कूपर

1
आर्कजीआईएस में सीधे एक्सेल फाइलों को लोड करना आश्चर्यजनक रूप से अच्छी तरह से काम करता है - सिवाय इसके कि कब नहीं! देखने के लिए चीजें: खजूर के टुकड़े, संख्याएँ कम। पहला समस्या निवारण चरण हमेशा CSV को निर्यात करने के लिए होता है, जिसमें टेक्स्ट और लोड के रूप में परिभाषित सभी कॉलम होते हैं, बजाय समस्या को देखने के। वह गुहेरी एक तरफ। X / Y के रूप में प्रदर्शित करना बहुत अच्छा काम करता है।
मैट विल्की

4

हमेशा साहसिक विकल्प होता है। आप स्वयं आकृति फ़ाइल लिख सकते हैं। ईएसआरआई आकृति के लिए युक्ति प्रकाशित करता है, जिसे आप यहां पढ़ सकते हैं:

http://www.esri.com/library/whitepapers/pdfs/shapefile.pdf

तुम भी एक DBF फ़ाइल लिखने की आवश्यकता होगी। आप यहां प्रारूप के बारे में पढ़ सकते हैं:

http://www.clicketyclick.dk/databases/xbase/format/dbf.html#DBF_STRUCT

यह निस्संदेह ओवरकिल है, लेकिन यह आपको पूरी प्रक्रिया पर नियंत्रण रखने का लाभ देगा।


मैं वास्तव में इस तरह से चल रहा हूँ - मैं सीधे आकृति लिखने के बजाय ओजीआर का उपयोग करूँगा हालांकि!
मार्क

2
एक्सेल शायद डीबीएफ को सीधे लिख सकता है, हालांकि मुझे उन डीबीएफ का उपयोग एक आकृतिफाइल के डीबीएफ घटक के रूप में सफलता के स्तर में भिन्नता है।
मावलकर

Excel dbf फ़ाइलों को नहीं लिखता है।
user30184

3

मैं व्यक्तिगत रूप से सुरक्षित सॉफ्टवेयर (http://www.safe.com) से FME का उपयोग करना पसंद करता हूं, जो न केवल मुझे XY मूल्यों से प्लॉट करने देता है, बल्कि मुझे निर्देश देता है कि निर्देशांक को एक प्रक्षेपण से दूसरे प्रक्षेपण में बदलने के लिए लचीलापन प्रदान करें, निर्दिष्ट करें सीमांकक के प्रकार, प्रारंभिक पंक्ति (पाठ फ़ाइल में हेडर सूचना है), बिंदु डेटा के लिए पाठ फ़ाइल में X, Y, गुण जानकारी होने पर विशेषताएँ संलग्न करें। यदि आप Google धरती में इस डेटा की कल्पना करना पसंद करते हैं, तो आप KML बिंदु शैली को भी निर्दिष्ट करते हुए उन्हें KML प्रारूप में लिख सकते हैं। ~ एसआरजी


2

यदि आप x, y डेटा पर कुछ अन्य प्रसंस्करण करना चाहते हैं, तो आप डेटा को पोस्टग्रेज में लोड कर सकते हैं, ज्यामिति डेटा प्रकार बनाने के लिए समवर्ती के साथ geomfromtext का उपयोग कर सकते हैं और फिर आकार में निर्यात करने के लिए pgsql2shp का उपयोग कर सकते हैं। यह दृष्टिकोण आपको दूसरे कॉलम में विषम स्थानिक संदर्भ प्रणाली डेटा को बनाए रखने की अनुमति देगा, जिसे आप आकार में निर्यात करने से पहले अपने सभी बिंदुओं को db के भीतर एक सामान्य संदर्भ प्रणाली में परिवर्तित करने के लिए उपयोग कर सकते हैं। मुझे पता है कि इसमें ogr / gdal की तुलना में अधिक चरण शामिल हैं लेकिन यह आपको बहुत अधिक लचीलापन देगा।


मैंने अतीत में इस दृष्टिकोण का उपयोग किया है, और यह एक अच्छा है। मुझे लगता है कि यहाँ मेरा लगातार ठोकर खाने वाला एक्सेल डेटा प्रकारों का मज़बूती से पता लगा रहा है ....
2:28 पर

1
मुझे लगता है कि आप अपने कॉलम को फिर से व्यवस्थित करने के लिए एक्सेल vba में कुछ लिख सकते हैं ताकि तारीख, x, y हमेशा पहले 3 कॉलम हों। कुछ प्रकार के कॉलम नामकरण सम्मेलनों के बिना, मुझे लगता है कि आपके पास जो भी है, उसे पूरी तरह से स्वचालित करना मुश्किल होगा।
जॉन पॉवेल

1

अपनी CSV फ़ाइलों को स्पैटलाइट में लोड करने के बारे में और फिर OGR या QGIS का उपयोग करके एक आकार में निर्यात करने के लिए।

http://www.gaia-gis.it/spatialite-2.2/index.html

तुम भी एक आकार में सीधे स्थानिक से निर्यात कर सकते हैं।

http://www.gaia-gis.it/spatialite-2.2/spatialite-2.2_tutorial.html#t3.1


यदि वे पुराने .xls प्रारूप (Excel 97-2003) के हैं, तो Spatialite Excel फ़ाइलों को सीधे आयात कर सकते हैं। प्रारंभिक आयात के बाद X और Y निर्देशांक को पूर्णांक ज्यामिति को SQL के साथ परिवर्तित किया जाना चाहिए।
user30184

यदि आपको जावा का उपयोग करने में कोई आपत्ति नहीं है तो आप एक्सेल फाइल को चीर कर POI प्रोजेक्ट का उपयोग कर सकते हैं और फिर नए आकार लिखने के लिए GeoTools का उपयोग कर सकते हैं
TheSteve0

0

अधिक बुनियादी परिवर्तन के लिए आप FME 2013 में 2Dpointreplacer ट्रांसफार्मर का उपयोग कर सकते हैं। आपको यह इंगित करने की आवश्यकता है कि X और Y मान किस कॉलम में स्थित हैं और फिर FME इन मानों को बिंदुओं के साथ आकार फ़ाइल में रूपांतरित कर देगा।
कॉलम नाम और प्रकार आवश्यकतानुसार सेट किए जा सकते हैं

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