รูปหลายเหลี่ยม shapefile ที่มีค่า Null?


10

ไม่มีใครรู้ว่าฉันสามารถหา Shapefile ตัวอย่างที่มีรายการ Null ได้ที่ไหน

ฉันไม่แน่ใจว่าจะสร้างหนึ่งรายการได้อย่างไร

คำตอบ:


10

ได้รับการเตือนว่าซอฟต์แวร์ SHP จำนวนมากที่อ่านไฟล์ไม่รองรับค่า Null สำหรับรูปทรงเรขาคณิต แม้แต่ ArcView เวอร์ชั่นที่เก่ากว่าก็มีปัญหา

ฉันได้สร้างตัวอย่างที่นี่: http://www.routeware.dk/temp/shp_null_sample.zip มันมี 3 ระเบียนที่สองไม่มีรูปเรขาคณิต


ArcView เวอร์ชันใด ฉันจำได้ว่า AV 2.x และ 3.x จะสร้างรูปทรงโมฆะเมื่อใดก็ตามที่พวกเขาสร้างรูปร่างไฟล์ใหม่ ('FTab' วัตถุในอเวนิว) ดังนั้นรูปทรงโมฆะจึงเป็นเรื่องธรรมดาและได้รับการสนับสนุนอย่างสมบูรณ์
whuber

สนับสนุนค่า null ซึ่งเป็นค่าที่ใช้ได้ (ไม่ทราบ) สำหรับรูปทรงเรขาคณิต ปัญหาคือซอฟต์แวร์จำนวนมากใช้รูปทรงเรขาคณิตโดยไม่ตรวจสอบก่อนว่าเป็นสิ่งที่ผิดหรือเปล่าสิ่งที่ไม่ดีเกิดขึ้นเช่นเกิดปัญหา นั่นเป็นเหตุผลที่มีเครื่องมือ gp Data Management \ CheckGeometry หากซอฟต์แวร์มีปัญหากับ fc นี่เป็นสิ่งแรกที่ต้องตรวจสอบ
gotchula

1
เป็นเรื่องง่าย ๆ ที่จะเพิ่มระเบียนใหม่ลงในไฟล์รูปร่างใหม่ (ctrl-A ใน View GUI ของ AV 3.x จะทำได้) พวกเขามีรูปร่างเป็นโมฆะโดยอัตโนมัติ รูปร่าง Null ยังถูกสร้างขึ้นเนื่องจากการดำเนินการที่ไม่ถูกต้องเช่นรูปร่างที่ยื่นออกมายากซึ่งอยู่นอกโดเมนของเส้นโครง AV 3.x โดยทั่วไปไม่มีปัญหากับพวกเขา ฉันคิดว่าปัญหาอาจเกิดขึ้นใน AV 8 และใหม่กว่า: ซอฟต์แวร์ใหม่ของ ESRI ไม่สอดคล้องกับข้อกำหนดของตัวเอง
whuber

1
@UffeKousgaard ฉันได้ใช้การขีดทับส่วนของโพสต์นี้ซึ่งเกี่ยวข้องกับลิงก์ซึ่งตอนนี้ตายไปแล้ว คุณช่วยอธิบายรายละเอียดเกี่ยวกับคำตอบนี้ได้ไหมเพื่อป้องกันการลบโพสต์ซึ่งอาจทำให้ชื่อเสียงเสียไป
Fezter

1
ไฟล์กลับมา
Uffe Kousgaard

10

ฉันถือว่าคุณหมายถึง null สำหรับคอลัมน์เรขาคณิต / รูปร่างเนื่องจาก shapefiles ไม่สนับสนุน null สำหรับฟิลด์ประเภทใด ๆ ยกเว้นเรขาคณิตและ (ฉันได้ยิน) สำหรับฟิลด์วันที่

รหัสด้านล่างสร้าง 1 รูปร่างไฟล์ที่มี 1 บันทึก / คุณสมบัติที่มีเรขาคณิตโพลี null


  import arcpy
  import os
  outfc = r'c:\temp\outfc.shp'
  arcpy.env.workspace = os.path.dirname(outfc)
  arcpy.CreateFeatureclass_management(arcpy.env.workspace,os.path.basename(outfc), 'polygon')
  cur = arcpy.InsertCursor(outfc)
  row = cur.newRow()
  cur.insertRow(row)
  del(row)
  del(cur)
  r = arcpy.CheckGeometry_management(outfc,'in_memory\\outtable')
  print r.getMessages()



ฉันเรียกใช้และรับสิ่งนี้ซึ่งเป็นสิ่งที่ฉันคาดหวัง

คำเตือน 000442: เรขาคณิตว่างที่ 0 ใน c: \ temp \ outfc.shp


1

หากคุณกำลังทำงานกับซอฟต์แวร์ ESRI อย่างน้อยฉันก็สามารถพูดคุยกับ ArcGIS 9.3 ได้ดังนั้นรูปร่างของไฟล์จะไม่สนับสนุน null ฉันพบปัญหานี้เมื่อไม่กี่สัปดาห์ที่ผ่านมาและใช้เวลาหนึ่งวันในการตรวจสอบ ฉันพบลิงค์นี้โดยเฉพาะอย่างยิ่งการให้ความกระจ่าง http://forums.esri.com/Thread.asp?c=93&f=993&t=125464. ดูเหมือนว่าวิธีเดียวที่จะสนับสนุน nulls ภายในรูปร่าง ESRI คือการใช้ฐานข้อมูลทางภูมิศาสตร์ (จากนั้นรูปร่าง shapefiles กลายเป็น Featureclasses ฉันใช้ไฟล์ geodatabase) เพื่อรองรับ nulls ฉันลงเอยด้วยการสร้าง geodatabase และสร้าง featureclasses (หรือที่เรียกว่า shapefiles) ภายในไฟล์ geodatabase (ซึ่งจะสนับสนุน nulls) ซึ่งต่างจากการสร้าง shapefile แล้วนำเข้าสู่ geodatabase (ซึ่งจะไม่สนับสนุน nulls) . ถ้าฉันจำได้อย่างถูกต้องคุณต้องระบุอย่างชัดเจนในคุณสมบัติของเขตข้อมูลที่คุณต้องการให้มีค่าเป็นศูนย์ นี่คือลิงค์ที่อาจช่วยให้วิธีสร้างคลาสคุณสมบัติในฐานข้อมูลไฟล์ใน ArcGIS 9.3 พร้อม Python?

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