Wielokątny plik kształtu z zerowymi wartościami?

10

Czy ktoś wie, gdzie mogę znaleźć przykładowy plik kształtu, który ma w nim puste wpisy (najlepiej plik kształtu wielokąta)?

Nie jestem pewien, jak utworzyć taki z zerowymi wpisami.

Jeff Storey
źródło

Odpowiedzi:

10

Ostrzegamy, że wiele programów odczytujących pliki SHP nie obsługuje wartości zerowych dla geometrii. Nawet starsze wersje ArcView miały problemy.

Utworzyłem próbkę tutaj: http://www.routeware.dk/temp/shp_null_sample.zip Zawiera 3 rekordy, drugi nie ma geometrii.

Uffe Kousgaard
źródło
Które wersje ArcView? Pamiętam, że AV 2.x i 3.x tworzyłyby geometrie zerowe za każdym razem, gdy tworzyły nowy plik kształtu (obiekt „FTab” w Avenue), więc geometrie zerowe były wspólne i całkowicie obsługiwane.
whuber
obsługiwane są zerowe geomy, są one prawidłową wartością (nieznaną) dla geometrii. Problem polega na tym, że wiele programów używa geometrii bez uprzedniego sprawdzenia, czy jest ona zerowa, a następnie zdarzają się złe rzeczy, takie jak awarie. Dlatego istnieje narzędzie gp Zarządzanie danymi \ CheckGeometry, jeśli oprogramowanie ma problemy z fc, zazwyczaj jest to pierwsza rzecz do sprawdzenia.
gotchula
1
Łatwo jest dodać nowe rekordy do nowego pliku kształtu (zrobi to ctrl-A w graficznym interfejsie użytkownika programu AV 3.x). Automatycznie mają kształty zerowe. Kształty zerowe powstały również w wyniku nieprawidłowych operacji, takich jak ciężko rzutujące kształty, które znajdują się poza domeną projekcji. AV 3.x generalnie nie miał z nimi problemów. Myślę, że mogły pojawić się problemy w AV 8 i nowszych: w rzeczywistości nowsze oprogramowanie ESRI nie było zgodne z ich specyfikacjami.
whuber
1
@UffeKousgaard, zastosowałem przekreślenie do części tego postu, która dotyczyła linku, który jest już martwy. Czy możesz rozwinąć tę odpowiedź, aby zapobiec usunięciu postu, co może spowodować utratę reputacji.
Fezter
1
Plik powrócił.
Uffe Kousgaard
10

Zakładam, że masz na myśli wartość null dla kolumny geometria / kształt, ponieważ pliki kształtów nie obsługują wartości null dla dowolnego typu pola oprócz geometrii i (słyszę) dla pól daty.

Poniższy kod tworzy 1 plik kształtu z 1 rekordem / operacją o zerowej geometrii poli.


  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()



Uruchomiłem go i dostałem to, czego bym się spodziewał

OSTRZEŻENIE 000442: geometria zerowa przy 0 w c: \ temp \ outfc.shp

gotchula
źródło
1

Jeśli pracujesz na oprogramowaniu ESRI, przynajmniej mogę mówić w ArcGIS 9.3, wtedy pliki kształtów nie obsługują wartości zerowych. Wpadłem na ten problem kilka tygodni temu i spędziłem dzień na badaniu. Znalazłem ten link szczególnie pouczający http://forums.esri.com/Thread.asp?c=93&f=993&t=125464. Wydaje się, że jedynym sposobem na obsługę wartości zerowych w plikach kształtu ESRI jest użycie geobaz danych (wtedy pliki kształtów stają się klasami obiektów. Użyłem pliku geobazy). Aby obsługiwać wartości zerowe, skończyłem z tworzeniem geobazy i tworzeniem klas obiektów (zwanych inaczej plikami shapefiles) wewnątrz geobazy danych pliku (będzie to obsługiwać wartości null) w przeciwieństwie do tworzenia pliku shapefile, a następnie importowania go do geobazy (nie będzie to obsługiwać wartości zerowych) . Jeśli dobrze pamiętam, musisz również jawnie określić we właściwościach pola, że ​​mają być obsługiwane wartości null. Oto link, który może pomóc Jak utworzyć klasę obiektów w geobazie pliku w ArcGIS 9.3 za pomocą Pythona?

9 małp
źródło