具有空值的多边形shapefile?


10

有谁知道在哪里可以找到其中包含空条目的示例shapefile(最好是多边形shapefile)?

我不确定如何用空条目创建一个。

Answers:


10

请注意,许多读取SHP文件的软件不支持几何的空值。甚至旧版本的ArcView都有问题。

我在这里创建了一个示例:http : //www.routeware.dk/temp/shp_null_sample.zip 它有3条记录,第二条没有几何图形。


哪个版本的ArcView?我记得当AV 2.x和3.x创建新shapefile(Avenue中的“ FTab”对象)时,它们都会创建空几何,因此空几何是常见的,并且得到了完全的支持。
whuber

支持空几何,它们是几何的有效值(未知)。麻烦的是,许多软件在不首先检查几何是否为null的情况下使用几何图形,然后发生了诸如崩溃之类的不良事件。这就是为什么有一个gp工具Data Management \ CheckGeometry的原因,如果该软件在使用fc时遇到问题,这通常是要检查的第一件事。
gotchula

1
将新记录添加到新的shapefile是一件简单的事情(AV 3.x的View GUI中的ctrl-A可以做到)。它们自动具有空形状。由于无效操作还产生了空形状,例如在投影范围之外的硬投影形状。AV 3.x通常没有问题。我认为在AV 8及更高版本中可能会出现问题:实际上,ESRI的较新软件不符合他们自己的规格。
Whuber

1
@UffeKousgaard,我已对此帖子中与链接相关的部分应用了删除线,该链接现已失效。您能否详细说明此答案,以防止删除该职位,否则可能会导致声誉下降。
Fezter

1
该文件回来了。
Uffe Kousgaard '17

10

我认为您的意思是geometry / shape列为null,因为shapefile不支持除几何和日期字段以外的任何字段类型的null。

下面的代码创建1个shapefile,其中1个记录/要素具有空多边形几何形状。


  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:c:\ temp \ outfc.shp中0处的空几何


1

如果您使用ESRI软件,至少我可以说ArcGIS 9.3,那么shapefile不支持null。几周前,我遇到了这个问题,花了一天的时间进行调查。我发现此链接特别说明了 http://forums.esri.com/Thread.asp?c=93&f=993&t=125464。似乎在ESRI shapefile中支持null的唯一方法是使用地理数据库(然后shapefile成为要素类。我使用的文件是地理数据库)。为了支持null,我最终制作了一个地理数据库,并在文件地理数据库(这将支持null)中创建要素类(否则称为shapefile),而不是创建shapefile然后将其导入到地理数据库(这将不支持null)。 。如果我没记错的话,还必须在字段属性中明确声明要支持null的属性。这是可能有用的链接。如何使用Python在ArcGIS 9.3的文件地理数据库中创建要素类?

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.