Fichier de formes de polygone avec des valeurs nulles?

10

Quelqu'un sait-il où je peux trouver un exemple de fichier de formes contenant des entrées nulles (de préférence un fichier de formes de polygones)?

Je ne sais pas comment en créer un avec des entrées nulles.

Jeff Storey
la source

Réponses:

10

Soyez averti que beaucoup de logiciels lisant des fichiers SHP ne prennent pas en charge les valeurs nulles pour la géométrie. Même les anciennes versions d'ArcView ont rencontré des problèmes.

J'ai créé un échantillon ici: http://www.routeware.dk/temp/shp_null_sample.zip Il a 3 enregistrements, le 2e n'a pas de géométrie.

Uffe Kousgaard
la source
Quelles versions d'ArcView? Je me souviens qu'AV 2.x et 3.x créeraient des géométries nulles chaque fois qu'ils créeraient un nouveau fichier de formes (objet 'FTab' dans Avenue), donc les géométries nulles étaient courantes et entièrement prises en charge.
whuber
les géométries nulles sont prises en charge, elles sont une valeur valide (inconnue) pour une géométrie. Le problème est que de nombreux logiciels utilisent la géométrie sans d'abord vérifier si elle est nulle, puis de mauvaises choses se produisent, telles que des plantages. C'est pourquoi il existe un outil gp Data Management \ CheckGeometry, si le logiciel a des problèmes avec un fc, c'est généralement la première chose à vérifier.
gotchula
1
Il est simple d'ajouter de nouveaux enregistrements à un nouveau fichier de formes (ctrl-A dans l'interface graphique d'affichage d'AV 3.x le fera). Ils ont automatiquement des formes nulles. Des formes nulles ont également été produites à la suite d'opérations non valides, telles que des formes à projection dure qui sont en dehors du domaine d'une projection. AV 3.x n'a généralement eu aucun problème avec eux. Je pense que des problèmes peuvent avoir surgi dans AV 8 et versions ultérieures: en effet, le nouveau logiciel d'ESRI n'était pas conforme à leurs propres spécifications.
whuber
1
@UffeKousgaard, j'ai appliqué un barré à la partie de cet article qui concernait un lien qui est maintenant mort. Pouvez-vous développer cette réponse pour éviter la suppression du message, ce qui pourrait entraîner une perte de réputation.
Fezter
1
Le dossier est de retour.
Uffe Kousgaard
10

Je suppose que vous voulez dire null pour la colonne géométrie / forme, car les fichiers de formes ne prennent en charge null pour aucun type de champ, sauf la géométrie et (j'entends) pour les champs de date.

Le code ci-dessous crée 1 fichier de formes avec 1 enregistrement / entité qui a une géométrie poly nulle.


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



Je l'exécute et j'obtiens ce à quoi je m'attendais

AVERTISSEMENT 000442: géométrie nulle à 0 dans c: \ temp \ outfc.shp

gotchula
la source
1

Si vous travaillez sur un logiciel ESRI, au moins je peux parler d'ArcGIS 9.3, alors les fichiers de formes ne prennent pas en charge les valeurs NULL. J'ai rencontré ce problème il y a quelques semaines et j'ai passé une journée à enquêter. J'ai trouvé ce lien particulièrement éclairant http://forums.esri.com/Thread.asp?c=93&f=993&t=125464. Il semble que la seule façon de prendre en charge les valeurs NULL dans les fichiers de formes ESRI soit d'utiliser les géodatabases (puis les fichiers de formes deviennent des classes de caractères. J'ai utilisé le fichier une géodatabase). Pour prendre en charge les valeurs nulles, j'ai fini par créer une géodatabase et créer les classes de fonctions (autrement connues sous le nom de fichiers de formes) à l'intérieur de la géodatabase fichier (cela prendra en charge les valeurs nulles), par opposition à la création d'un fichier de formes et à l'importer dans la géodatabase (cela ne prend pas en charge les valeurs nulles) . Si je me souviens bien, vous devez également indiquer explicitement dans les propriétés du champ que vous souhaitez que les valeurs NULL soient prises en charge. Voici le lien qui pourrait vous aider Comment créer une classe d'entités dans une géodatabase fichier dans ArcGIS 9.3 avec Python?

9 singes
la source