ฉันจะแปลงไฟล์ excel ด้วยคอลัมน์ x, y เป็น shapefile ได้อย่างไร


26

ฉันจะแปลงไฟล์ excel ด้วยคอลัมน์ x, y ไปยังไฟล์ shape point ได้อย่างไร?

มีข้อกำหนดที่ค่อนข้างเป็นทางเลือกเพิ่มเติมจากการสร้างรูปร่างไฟล์ที่ถูกต้อง:

  1. ควรรักษาประเภทคอลัมน์ (ตามตัวระบุรูปแบบของ Excel) (โดยเฉพาะประเภทวันที่)
  2. ควรใช้ชื่อคอลัมน์จากส่วนหัว
  3. ฉันต้องการทำสิ่งนี้จากบรรทัดคำสั่ง
  4. ถ้าฉันสามารถรวมการอ้างอิงเชิงพื้นที่ที่แตกต่างกันสำหรับจุดในคอลัมน์ที่สามฉันจะมีความสุขมาก :)

คำตอบ:


24

ฉันขอแนะนำให้ใช้OGR / GDALซึ่งเป็นส่วนหนึ่งของห้องสมุดGDAL OGR รองรับรูปแบบเสมือนจริงซึ่งอนุญาตให้มีการกำหนดผ่านไฟล์ XML หากคุณแปลงแผ่นงาน Excel เป็น CSV คุณสามารถสร้าง VRT เพื่อเข้าถึงข้อมูล

สมมติว่าคุณมีสิ่งนี้example.csv:

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

คุณสามารถสร้าง VRT ได้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" />

โปรดทราบว่า shapefiles เก็บแอตทริบิวต์ในรูปแบบDBASE IVซึ่งมีความยืดหยุ่นน้อยกว่าชนิดข้อมูลมากกว่า Excel เมื่อคุณได้ระบุไฟล์ VRT ของคุณแล้วคุณสามารถใช้เครื่องมือ OGR ปกติเพื่อแปลงข้อมูลเป็น Shapefile:

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

น่าเสียดายที่ # 4 เป็นไปไม่ได้ - ข้อมูลจำเพาะของ Shapefile อนุญาตให้มีการฉายภาพเดียว (ดูได้ที่นี่example.prjหลังจากขั้นตอนสุดท้าย)


ข้อเสียเพียงอย่างเดียวคือฉันต้องหาประเภทข้อมูลของคอลัมน์โดยทางโปรแกรมเพื่อเขียน<Field>แท็ก ฉันเดาว่าฉันจะคิดออกเองด้วยตัวเอง :)
fmark

ขวา. หากคุณต้องการโซลูชันอัตโนมัติและเข้าถึง ArcGIS คุณสามารถทำได้ด้วยเครื่องมือ Add XY Coordinates tinyurl.com/38jm55kแทนซึ่งควรทำตามขั้นตอนดังกล่าวแทน
scw

ข้อควรพิจารณาที่สำคัญคือการทำให้ไฟล์ Excel ของคุณอยู่ในรูปแบบที่เหมาะสมกับ ESRI Shapefile ก่อน - มีข้อ จำกัด เกี่ยวกับชื่อคอลัมน์, ความยาวของชื่อและถ้าคุณใช้เครื่องมือ Add XY ในแบบที่ ESRI ทำให้ประเภทเขตข้อมูลเป็นอัตโนมัติ ปัญหา webhelp.esri.com/arcgisdesktop/9.2/…
spg

3
บริการออนไลน์เพื่อช่วยสร้างไฟล์ vrt ที่มีรูปแบบถูกต้อง: vrtbuilder.appspot.com
matt wilkie

9

คุณสามารถใช้ปลั๊กอินข้อความที่มีตัวคั่นซึ่งมาพร้อมกับ QGIS (http://qgis.org ) เพื่อโหลดไฟล์ข้อความแล้วบันทึกเป็นไฟล์รูปร่าง


ฉันมักจะเกิดข้อผิดพลาดในการแยกวิเคราะห์โดยใช้เครื่องมือนี้ คำแนะนำใด ๆ?
fmark

1
คุณมีตัวอย่างเฉพาะหรือไม่
gsherman

@fmark - ฉันได้รับข้อผิดพลาดเหล่านี้เป็นอย่างดีและมันมักจะเกิดจากการจัดการ MS Excel CSV ที่
dassouki

6

แม้ว่าจะไม่ได้มาจากบรรทัดคำสั่งคุณสามารถทำได้ภายใน ArcGIS App ตั้งแต่ 9.3.1 เพียงเพิ่ม XLS ลงใน ArcMap โดยตรง สร้างเลเยอร์กิจกรรม XY จาก XLS (เช่นเลือกคอลัมน์ X, Y และตั้งค่าการอ้างอิงเชิงพื้นที่ของคุณ) จากนั้นส่งออกเลเยอร์กิจกรรม XY นี้ไปยัง. shp ใหม่ซึ่งสามารถเป็นอัตโนมัติได้อย่างง่ายดายด้วยสคริปต์ python / VBA หรือแบบจำลองใน modelbuilder . ยินดีที่ได้ช่วยเหลือขั้นตอนการทำงานพื้นฐานนี้หากคุณต้องการข้อมูลเพิ่มเติม


1
หากคุณใช้ Python คุณสามารถเรียกใช้เครื่องมือการประมวลผลทางภูมิศาสตร์จากบรรทัดคำสั่ง
jswise

6

ฉันค้นหา แต่ไม่พบหน้าความช่วยเหลือใน Display XY Data ในวิธีใช้บนเว็บ แต่กระบวนการนั้นง่าย

  1. ใช้เพิ่มข้อมูล (หรือลากและวางจากหน้าต่างแคตตาล็อก) เพื่อเรียกดูแผ่นงานของคุณ (ภายในสเปรดชีต) และเพิ่มลงในแผนที่ของคุณ
  2. คลิกขวาเพื่อเลือกและใช้Display XY Dataเพื่อเพิ่มเลเยอร์เหตุการณ์
  3. คลิกขวาที่เลเยอร์เหตุการณ์ที่เพิ่งสร้างและใช้Data | ส่งออกข้อมูลเพื่อสร้าง Shapefile

คุณต้องใช้สิทธิ์การใช้งาน ArcView (พื้นฐาน) ของ ArcGIS (สำหรับ) เดสก์ท็อปเท่านั้น


ฉันต้องทำอะไรกับคอลัมน์ด้านบนที่ไม่ได้เป็นส่วนหนึ่งของข้อมูลหรือไม่
โซรัน

สองคอลัมน์ใดไม่ได้เป็นส่วนหนึ่งของข้อมูลของคุณ ขั้นตอนที่ฉันอธิบายควรใช้คอลัมน์ใด / ยาวที่คุณเลือกเพื่อสร้างรูปทรงเรขาคณิตของจุดและจากนั้นฉันคิดว่าเก็บส่วนที่เหลือเป็นคุณสมบัติของพวกเขา สิ่งที่ดีที่สุดคือการลองใช้และหากผลลัพธ์ไม่เป็นไปตามที่คาดไว้ให้อธิบายการเปรียบเทียบของคุณที่คาดไว้
PolyGeo

คิดว่าฉันอ่านผิดสองครั้ง - และสมมติว่าคุณหมายถึงแถวบนสุด (ของหัวเรื่อง) พวกเขาควรกลายเป็นชื่อฟิลด์หลังจากเพิ่มข้อมูล
PolyGeo

ไม่แน่ใจว่ายังคงเป็นกรณีนี้หรือไม่ แต่มีช่องว่างในชื่อส่วนหัวในไฟล์ Excel ที่เคยปวดหัวจริงสำหรับ Add XY
Chad Cooper

1
การโหลดไฟล์ Excel ลงใน ArcGIS นั้นทำงานได้อย่างยอดเยี่ยมยกเว้นเมื่อไม่ได้ใช้! สิ่งที่ต้องดู: วันที่ mangled จำนวนที่ถูกตัดทอน ขั้นตอนการแก้ไขปัญหาขั้นแรกคือการส่งออกเป็น CSV ด้วยคอลัมน์ทั้งหมดที่กำหนดเป็นข้อความและโหลดแทนการดูปัญหาที่เกิดขึ้น ข้อแม้นั้นกัน แสดงเป็น X / Y ทำงานได้ดีมาก
matt wilkie

4

มีตัวเลือกที่ชอบผจญภัยเสมอ คุณสามารถเขียนไฟล์รูปร่างด้วยตัวเอง ESRI เผยแพร่ข้อมูลจำเพาะสำหรับ shapefiles ซึ่งคุณสามารถอ่านได้ที่นี่:

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

คุณอาจจะต้องเขียนไฟล์ DBF ด้วย คุณสามารถอ่านเกี่ยวกับรูปแบบได้ที่นี่:

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

นี่คือ overkill อย่างไม่ต้องสงสัย แต่มันจะให้ประโยชน์จากการควบคุมกระบวนการทั้งหมด


จริง ๆ แล้วฉันกำลังดูแลวิธีนี้ - ฉันจะใช้ OGR แทนการเขียน shapefile โดยตรง!
fmark

2
Excel อาจเขียน DBF โดยตรงแม้ว่าฉันจะประสบความสำเร็จในระดับที่แตกต่างกันโดยใช้ DBF เหล่านั้นเป็นองค์ประกอบ DBF ของ Shapefile
mwalker

Excel ไม่ได้เขียนไฟล์ dbf ออก
user30184

3

ฉันชอบใช้ FME จากซอฟต์แวร์ที่ปลอดภัย (http://www.safe.com) ซึ่งไม่เพียง แต่ช่วยให้ฉันวางแผนคะแนนจากค่า XY แต่ให้ความยืดหยุ่นในการแปลงพิกัดจากการฉายภาพหนึ่งเป็นอีกฉายก่อนกำหนด ชนิดของตัวคั่นบรรทัดเริ่มต้น (ในกรณีที่ไฟล์ข้อความมีข้อมูลส่วนหัว) แนบแอตทริบิวต์ในกรณีที่ไฟล์ข้อความมี X, Y, ข้อมูลคุณสมบัติสำหรับข้อมูลจุด ในกรณีที่คุณต้องการแสดงข้อมูลนี้ใน Google Earth คุณสามารถเขียนข้อมูลเหล่านั้นไปยังรูปแบบ KML ในขณะที่ระบุลักษณะของจุด KML เช่นกัน ~ SRG


2

หากคุณต้องการทำการประมวลผลอื่น ๆ ในข้อมูล x, y คุณสามารถโหลดข้อมูลลงใน postgres ใช้ geomfromtext พร้อมการต่อข้อมูลเพื่อสร้างชนิดข้อมูลเรขาคณิตแล้วใช้ pgsql2shp เพื่อส่งออกเป็นรูปร่าง วิธีนี้ยังช่วยให้คุณเก็บข้อมูลระบบอ้างอิงเชิงพื้นที่ที่แตกต่างกันในคอลัมน์อื่นซึ่งคุณสามารถใช้เพื่อแปลงคะแนนทั้งหมดของคุณให้เป็นระบบอ้างอิงทั่วไปภายใน db ก่อนที่จะส่งออกเป็นรูปร่าง ฉันรู้ว่าสิ่งนี้เกี่ยวข้องกับขั้นตอนมากกว่า ogr / gdal แต่มันจะให้ความยืดหยุ่นมากขึ้น


ฉันเคยใช้วิธีการนี้ในอดีตและมันก็เป็นวิธีที่ดี ผมคิดว่าอุปสรรค์ของฉันที่สอดคล้องกันที่นี่คือการตรวจสอบชนิดข้อมูล Excel ได้อย่างน่าเชื่อถือ ....
fmark

1
ฉันคิดว่าคุณสามารถเขียนอะไรบางอย่างใน excel vba เพื่อจัดเรียงคอลัมน์ของคุณใหม่ก่อนเพื่อให้วันที่, x, y เป็น 3 คอลัมน์แรกเสมอ หากไม่มีแนวคิดการตั้งชื่อคอลัมน์ฉันคิดว่ามันคงเป็นเรื่องยากที่จะทำให้สิ่งที่คุณมีอยู่ในใจเป็นไปโดยอัตโนมัติ
John Powell

1

สิ่งที่เกี่ยวกับการโหลดไฟล์ CSV ของคุณลงใน spatiallite แล้วใช้ OGR หรือ QGIS เพื่อส่งออกไปยังรูปร่างไฟล์

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

คุณยังสามารถส่งออกจาก spatialite ไปยัง shapefile ได้โดยตรง

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


Spatialite สามารถนำเข้าไฟล์ Excel ได้โดยตรงหากเป็นรูปแบบ. xls แบบเก่า (Excel 97-2003) พิกัด X และ Y จะต้องถูกแปลงรูปทรงเรขาคณิตที่มี SQL หลังจากนำเข้าเริ่มต้น
user30184

หากคุณไม่สนใจการใช้ Java คุณสามารถใช้โครงการ POI เพื่อแยกไฟล์ excel ออกจากนั้นใช้ GeoTools เพื่อเขียน
รูปร่าง

0

สำหรับการแปลงพื้นฐานเพิ่มเติมคุณสามารถใช้หม้อแปลง 2 จุดใน FME 2013 คุณต้องระบุว่าคอลัมน์ใดที่มีค่า X และ Y อยู่และจากนั้น FME จะแปลงค่าเหล่านี้ให้เป็นไฟล์รูปร่างที่มีคะแนน
สามารถตั้งชื่อและประเภทคอลัมน์ได้ตามต้องการ

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.