Шейп-файл полигона с нулевыми значениями?


10

Кто-нибудь знает, где я могу найти образец шейп-файла, который содержит нулевые записи (предпочтительно шейп-файл полигона)?

Я не уверен, как создать один с пустыми записями.

Ответы:


10

Имейте в виду, что многие программы, читающие файлы SHP, не поддерживают нулевые значения для геометрии. Даже у более старых версий ArcView были проблемы.

Я создал образец здесь: http://www.routeware.dk/temp/shp_null_sample.zip. Он имеет 3 записи, у 2 нет геометрии.


Какие версии ArcView? Я помню, что AV 2.x и 3.x создавали нулевую геометрию всякий раз, когда создавали новый шейп-файл (объект 'FTab' в Avenue), поэтому нулевые геометрии были общими и полностью поддерживались.
whuber

поддерживаются нулевые геомы, они являются допустимым значением (неизвестным) для геометрии. Проблема в том, что многие программы используют геометрию, не проверив сначала, является ли она нулевой, а затем происходят плохие вещи, такие как сбои. Вот почему существует утилита gp Data Management \ CheckGeometry, если у программного обеспечения возникают проблемы с fc, обычно это первое, что нужно проверить.
Gotchula

1
Это просто, чтобы добавить новые записи в новый шейп-файл (ctrl-A в графическом интерфейсе просмотра AV 3.x сделает это). Они автоматически имеют нулевые формы. Нулевые фигуры также были получены в результате недопустимых операций, таких как жестко проецируемые фигуры, находящиеся вне области проекции. AV 3.x вообще не было проблем с ними. Я думаю, что проблемы могли возникнуть в AV 8 и более поздних версиях: фактически, более новое программное обеспечение ESRI не соответствовало их собственным спецификациям.
whuber

1
@UffeKousgaard, я применил зачеркивание к той части этого поста, которая имела отношение к ссылке, которая сейчас мертва. Можете ли вы уточнить этот ответ, чтобы предотвратить удаление поста, что может привести к потере репутации.
Фезтер

1
Файл вернулся.
Uffe Kousgaard

10

Я предполагаю, что вы имеете в виду нуль для столбца геометрии / формы, потому что шейп-файлы не поддерживают ноль для любого типа поля, кроме геометрии и (я слышу) для полей даты.

Приведенный ниже код создает 1 шейп-файл с 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: нулевая геометрия в 0 в c: \ temp \ outfc.shp


1

Если вы работаете над программным обеспечением ESRI, по крайней мере, я могу говорить о ArcGIS 9.3, тогда шейп-файлы не поддерживают нули. Я столкнулся с этой проблемой несколько недель назад и провел целый день, расследуя. Я нашел эту ссылку особенно освещающей http://forums.esri.com/Thread.asp?c=93&f=993&t=125464, Кажется, единственный способ поддержать пустые значения в шейп-файлах ESRI - это использовать базы геоданных (тогда шейп-файлы становятся классами объектов. Я использовал файл базы геоданных). Для поддержки нулей я закончил создание базы геоданных и создание классов объектов (также называемых шейп-файлами) внутри файловой базы геоданных (это будет поддерживать нули), в отличие от создания шейп-файла и последующего импорта его в базу геоданных (это не будет поддерживать нули) , Если я правильно помню, вы также должны явно указать в свойствах поля, что вы хотите, чтобы значения null поддерживались. Вот ссылка, которая может помочь Как создать класс объектов в файловой базе геоданных в ArcGIS 9.3 с Python?

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.