Message posté par : Sylvain M.
----------------------------------------
Pour la première étape, l'index spatial doit être calculé après la création de la
table.
Là, vous l'avez mis entre les parenthèses du CREATE TABLE.
Voici ce qui devrait marcher :
-----------------
Code :
CREATE TABLE union_tables AS
(
SELECT gid, insee, the_geom
FROM table 1
UNION
SELECT gid, insee, the_geom
FROM table 2
UNION
SELECT gid, insee, the_geom
FROM table 3
);
-----------------
-----------------
Code :
CREATE INDEX union_tables_idx
ON union_tables
USING gist
(the_geom) ;
-----------------
Moi, sous Spatialite, je fais mes index spatiaux comme ça : "SELECT
CreateSpatialIndex('ma_table', 'geom');", mais je pense que votre
écriture est bonne aussi. J'aurais juste mis "the_geom"
(union_tables_the_geom_idx) dans le nom de l'index, pour indiquer qu'il est lié à
ce champ.
Pour la 2e étape, ce doit être quelque chose comme ça (mais j'avoue que je ne maitrise
pas trop cette proposition, et du coup, si ça ne marche pas, on aura encore besoin de
l'aide de Nicolas ;) En l'occurrence, ce que je n'ai pas compris, c'est le
"null" dans la requête de Nicolas) :
-----------------
Code :
SELECT *
FROM Point_topo
WHERE NOT EXISTS (
SELECT null
FROM union_tables
WHERE st_dwithin(Point_topo.geom, union_tables.the_geom, 0.5)
)
-----------------
----------------------------------------
Le message est situé
https://georezo.net/forum/viewtopic.php?pid=358893#p358893
Pour y répondre : geobd(a)ml.georezo.net ou reply de votre messagerie
Pour vous désabonner connectez-vous sur le forum puis Profil / Abonnement
--
Association GeoRezo - le portail géomatique
https://georezo.net