Suite

Importer une colonne d'un fichier de formes à un autre à l'aide de PostGIS ?


J'ai donc deux fichiers de formes : l'un est un fichier de formes hexagonal contenant des données sur le nombre de chiens, de chats et d'oiseaux et un autre avec les lignes de comté.

Comment fusionner les deux fichiers de formes pour montrer dans quel comté se trouve chaque hexagone ? j'ai essayé la requête suivante

créer la table newhex AS (sélectionnez * à partir des hexagones, comtés où ST_Within(hexes.geom, counties.geom));

mais j'obtiens l'erreurErreur lors de l'exécution de la requête utilisateur : ERREUR : colonne "gid" spécifiée plusieurs fois

Je suppose qu'il y a deux colonnes geom de différence et qui sont en conflit avec les colonnes geom. J'ai donc essayé une autre requête en sélectionnant explicitement la colonne geom du bac hexadécimal et le nom du comté avec :

sélectionnez shp_ohhexsm.geom, ohcounties.name de shp_ohhexsm, ohcounties où ST_Within(shp_ohhexsm.geom, ohcounties.geom)

Mais j'obtiens ce résultat bizarre

Existe-t-il un moyen de fusionner simplement le nom des comtés dans mes fichiers hexadécimaux sans les espaces étranges ?


Vous devez prendre en compte deux problèmes :

  1. Vos petits polygones hexagonaux sont toujours des polygones et peuvent se superposer à deux polygones de comté, avec ST_Within renvoyéfaux. Vous voudrez probablement réduire ces polygones hexagonaux à un point, par ex. le centroïde. Ceci peut être réalisé avec leST_Centroidune fonction.

  2. La jointure elle-même basée sur l'emplacement géographique qui peut être résolue avec une déclaration de jointure comme suit :

    SELECT * FROM hexs H LEFT OUTER JOIN counties C ON ST_Within(ST_Centroid(H.geom), C.geom);

    La jointure externe gauche garantit que vous ne supprimez aucun polygone hexagonal où le centroïde pourrait être en dehors des géométries de votre comté, en renvoyant unNULvaleur.

Le dernier problème que vous devez résoudre est lié à laCRÉER UN TABLEAU COMME…instruction où vous ne pouvez pas avoir deux noms de colonnes identiques. Vous devez répertorier vos colonnes manuellement et vous devrez peut-être renommer une colonne avec lecol_name AS new_namesyntaxe comme ici :

SELECTIONNER H.gid AS gid_hex, C.gid AS gid_county FROM…

(en supposant la même requête qu'avant et vous avez deuxgidcolonnes et vous souhaitez conserver les deux).


Voir la vidéo: Import Shapefile to Postgresql via QGIS and Postgis Shapefile ImportExport Manager (Octobre 2021).