More

Comment faire reconnaître le FID par GeoServer ?

Comment faire reconnaître le FID par GeoServer ?


I'm trying to load a shapefile into a GeoServer that has a style defined which makes use of the FID attribute:

     FID

Le fichier de formes avec lequel je travaille actuellement n'a pas d'attribut 'FID' explicite :

$ ogrinfo -al -geom=NO precincts.dbf… OBJECTID : Entier (10.0) Nom : Chaîne (100.0) Libellé : Chaîne (100.0) Type : Chaîne (50.0) CurrencyDa : Date (10.0) SrcFormat : Chaîne (150.0) Shape_area : Réel (19.17) Shape_len : Réel (19.17)

Mais demander l'attribut 'FID' semble en procurer un :

$ ogrinfo -geom=NO -al precincts.shp -sql 'select FID from precincts' FID: Integer (0.0) OGRFeature(precincts):0 FID (Integer) = 0 OGRFeature(precincts):1 FID (Integer) = 1 OGRFeature (enceintes):2 FID (entier) = 2

Le télécharger sur GeoServer ne répertorie cependant aucun attribut FID :

Alors que d'autres fichiers de formes précédemment téléchargés (et dont la provenance m'est inconnue) en ont un :

J'ai réussi à générer un fichier de formes avec un attribut FID en l'exportant depuis PostGIS. Cependant, ce fichier de formes particulier « enceintes » ne provient pas de PostGIS. (Peut-être que je pourrais l'importer dans PostGIS juste à cette fin, mais cela semble un peu stupide… )

En gros, je me demande :

  1. Quel est le problème avec l'attribut FID ? Est-ce un attribut réel, ou quelque chose que ogrinfo simule ?
  2. Existe-t-il un moyen de le transformer d'un faux attribut en un vrai afin que GeoServer puisse le voir ?
  3. Ou existe-t-il un autre moyen pour que GeoServer le reconnaisse aux fins de ce style ?

Grâce aux commentaires ci-dessus, je pense pouvoir répondre maintenant.

Les fichiers de formes ont généralement (toujours ?) un attribut de caractéristique réel, qui peut être appelé FID, OBJECTID ou autre chose. Mais, peut-être parce que le nom varie, les outils GDAL vous permettent d'utiliser le terme « FID » et ils généreront un « faux FID » sur demande, qui peut ne pas correspondre à l'identifiant réel de la fonctionnalité.

Transformer un faux FID en un vrai FID est assez simple :

ogr2ogr -f "ESRI Shapefile" precincts-fid.shp precincts.shp  -sql 'select FID,* from precincts'

Cela oblige ogr2ogr à générer un ID de ligne, puis à l'enregistrer avec tous les autres attributs réels.

Au cas où il serait important de conserver un autre attribut en tant que FID (ce n'était pas dans mon cas):

ogr2ogr -f "ESRI Shapefile" precincts-fid.shp precincts.shp  -sql 'select OBJECTID as FID,* from precincts'