จะบังคับให้ ArcGIS จดจำฟิลด์ข้อความในไฟล์ CSV ได้อย่างไร


11

เกี่ยวข้องกับการตรวจจับชนิดข้อมูลในการโหลดตาราง ArcGIS

ฉันมีไฟล์ CSV ซึ่งมีส่วนผสมของฟิลด์ตัวเลขและข้อความ:

ID,Txt,Int,Dbl
12345,abc,45,56.78
12346,9,65,23.12
12347,10,66,23.13

ตามบทความ Esri นี้ถ้า 8 แถวบนสุดมีค่าข้อความฟิลด์จะถูกจัดประเภทเป็นข้อความ แต่ฉันก็พบว่าฟิลด์ที่สองถูกจัดประเภทเป็นแบบยาว ซึ่งหมายความว่าละเว้นค่า "abc":

ป้อนคำอธิบายรูปภาพที่นี่

ฉันจะบังคับให้ ArcGIS จดจำสิ่งนี้เป็นฟิลด์ข้อความในขณะที่รักษาข้อมูลในรูปแบบ CSV ได้อย่างไร

วิธีแก้ปัญหาคือการสร้างตารางฐานข้อมูลกำหนดเขตข้อมูลเป็นข้อความและโหลดข้อมูล แต่ฉันหวังว่าจะเก็บตารางไว้ใน CSV (เป็นผลลัพธ์ของกระบวนการอื่น)

ขอบคุณ


2
นี่คือข้อมูลจำเพาะเต็มรูปแบบสำหรับบันทึก: msdn.microsoft.com/en-us/library/windows/desktop/ ...... ที่น่าสนใจมันไม่ได้ทำงานอย่างเต็มที่สำหรับฉัน ...
Mahdi

คำตอบ:


18

ดูที่ส่วน "การเอาชนะการจัดรูปแบบไฟล์ข้อความ" ในหัวข้อวิธีใช้เกี่ยวกับการเพิ่ม ASCII หรือตารางไฟล์ข้อความ :

คุณสามารถแทนที่วิธีการแสดงไฟล์ข้อความที่คั่นด้วยภายใน ArcGIS โดยใช้ไฟล์ schema.ini ตัวอย่างของเวลาที่คุณต้องการใช้ไฟล์ schema.ini เพื่อลบล้างพฤติกรรมเริ่มต้นคือเมื่อ ArcGIS ตีความประเภทฟิลด์ผิด ตัวอย่างต่อไปนี้แสดงวิธีการทำเช่นนี้สำหรับฟิลด์ที่เรียกว่า PLOTS ซึ่งควรแสดงเป็นข้อความประเภท แต่จะถูกตีความว่าเป็นประเภทที่สอง

[Trees.CSV]
Col14=PLOTS Text

โปรดทราบว่าคุณอาจต้องสร้างไฟล์ schema.ini หากไม่มีอยู่และคุณต้องแทนที่วิธีแสดงไฟล์ข้อความที่คั่นด้วย ArcGIS สำหรับข้อมูลเพิ่มเติมเกี่ยวกับไฟล์ schema.ini จะค้นหาสำหรับ schema.ini บนเว็บไซต์ของ Microsoft MSDN


2
ขอบคุณสำหรับสิ่งนั้น - มันหลอกลวง ดูเหมือนว่าจะมีปัญหากับ ArcGIS ที่สแกน 8 แถวแรกโดยอัตโนมัติ
สตีเฟนนำ

4
ฉันต้องเพิ่ม "MaxScanRows = 0" เนื่องจากสิ่งที่ "ColX = ชื่อข้อความ" ดูเหมือนจะไม่ทำงาน 100% ด้วยตัวเอง
Stephen Lead

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