Message posté par : Hippo (jerome.hippolyte(a)yahoo.fr)
----------------------------------------
Ma question va sûrement de soi pour beaucoup mais j'aimerais un éclaircissement en terme de bonnes pratiques sur ma problématique svp.
J'ai 2 tables de données. Dans l'une j'ai l'ensemble des communes d'un département avec leur code INSEE. Dans l'autre, j'ai des parcelles appartenant à plusieurs communes, et le code insee des communes de rattachement.
Dans QGIS, afin de joindre mes 2 tables, je fais une simple jointure sur le code insee.
Pour autant, dans PostGreSQL/PostGIS, puis-je opérer de la même façon avec une relation de 1 à N ou dois je préférablement créer une nouvelle colonne dans chaque table avec un id unique pour l'indexation, sur lequel je devrai faire ma jointure (et non sur le code insee donc) ?
----------------------------------------
Le message est situé https://georezo.net/forum/viewtopic.php?pid=348200#p348200
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
Message posté par : Nat 064
----------------------------------------
Merci pour votre réponse.
Nous sommes plusieurs à alimenter cette table, je ne suis pas spécialiste, pensez-vous qu'une fonction-trigger pourrait régler notre problème.
Et si oui, connaissez-vous le contenu de cette fonction ?
Merci
----------------------------------------
Le message est situé https://georezo.net/forum/viewtopic.php?pid=346614#p346614
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
Message posté par : neskuik01
----------------------------------------
Bonjour
J'ai une couche de points que je cherche à joindre à une couche de surface sur la base d'une distance de 1000m ,
J'ai utilisé st_dwithin(b.geom, a.geom,1000) le souci c'est que du coup un point peut se retrouver dans plusieurs polygones, j'ai donc rajouté limit 1 mais je pense que j'ai pas mis la limite au bon endroit ( je me retrovue que avec 1 jointure )
----------------------------------------
Le message est situé https://georezo.net/forum/viewtopic.php?pid=347977#p347977
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
Message posté par : Olivier Pompier (pompierolivier(a)hotmail.com)
----------------------------------------
Bonjour,
N'ayant pas trouvé d'équivalent, je me permets de déposer ce script permettant d'insérer des données (attributs + geometrie)issus d'un shape ou d'un autre format vecteur vers une base de données PG via psycopg2.
Dans mon cas , je suis passé par Python pour intégration dans un plugin.
C'est écrit avec peu d'élégance mais ça a le mérite d'être fonctionnel, toute suggestion de correction/amélioration est bienvenue
-----------------
Code :
try:
connection = psycopg2.connect(user="postgres",
password="postgres",
host="localhost",
port="5432",
database="db")
# Create a cursor to perform database operations
cursor = connection.cursor()
insertquery = "INSERT INTO table (champ1, champ2, geom) VALUES {} ".format(self.valSql(lyr))
cursor.execute(insertquery)
connection.commit()
except (Exception, Error) as error:
self.iface.messageBar().pushMessage('Error while connecting to PostgreSQL')
finally:
if (connection):
cursor.close()
connection.close()
#
def valSql(lyr):
''' retourne les valeurs placées dans la requête INSERT INTO '''
l = []
for feat in lyr.getFeatures():
l.append('(')
l.append(str((feat['CHAMP1'])) + ',')
l.append(str((feat['CHAMP2'])) + ',')
l.append('(ST_GeomFromText (\'' + feat.geometry().asWkt() + '\', 32631)))') # On assigne le SCR EPSG:32631 ou autre
l.append(',')
liste_vers_str_geom = ''.join(str(e) for e in l)
return liste_vers_str_geom[:-1] # avec le -1 on se débarasse de la virgule finale
-----------------
----------------------------------------
Le message est situé https://georezo.net/forum/viewtopic.php?pid=347441#p347441
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
Message posté par : Hippo (jerome.hippolyte(a)yahoo.fr)
----------------------------------------
Bonsoir,
J'ai une table dans PostGreSQL qui liste les départements français et les communes composant chacun des départements, ainsi que les populations municipales.
Je souhaiterais que ma requête retourne pour chaque département les 5 communes ayant le plus d'habitants.
J'ai bien essayé quelquechose comme :
SELECT * FROM table ORDER BY departement,population DESC FETCH FIRST 5 ROWS ONLY
Mais la requête me renvoie évidemment les 10 premières lignes de mon tableau et non les 5 premières lignes pour chaque département ...
----------------------------------------
Le message est situé https://georezo.net/forum/viewtopic.php?pid=347903#p347903
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
Message posté par : Sylvain M.
----------------------------------------
Bonjour,
J'ai une couche de points (adresses) et une coche de polygones (zones d'interventions), qui sont en relation attributaire (1-1) via un identifiant.
J'arrive à calculer la distance minimale entre le point et le polygone joint via cette requête :
-----------------
Code :
SELECT pt.id
st_distance(pt.geom, poly.geom) as dist_min
FROM pt
JOIN poly ON pt.id = poly.id
-----------------
Mais j'aimerais récupérer les coordonnées du point du polygone correspondant à cette plus courte distance, et ainsi pouvoir construire la ligne [1] entre le point et le polygone.
Est-ce quelqu'un aurait une idée de requête pour récupérer ce point de distance minimale entre le polygone et le point, sur le périmètre du polygone ?
Merci pour vos conseils ! :D
[1] avec un ST_Makeline() :
-----------------
Code :
st_makeLine(pt.geom, /* geom du point recherché */ )
-----------------
----------------------------------------
Le message est situé https://georezo.net/forum/viewtopic.php?pid=347887#p347887
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
Message posté par : neskuik01
----------------------------------------
Je suis tombé sur la fonction rédigé par tumasgiu : http://sqlfiddle.com/#!17/53864/4
J'ai juste du mal à comprendre à quoi correspond start s et end e ? s'agit-il des extrémités aval et amont d'un réseau ?
Ou start serait les segment dont st_equals(st_startpoint(t.geom), st_endpoint(t.geom)) = FALSE
et
END st_equals(st_endpoint(t.geom), st_startpoint(t.geom)) is FALSE ?
----------------------------------------
Le message est situé https://georezo.net/forum/viewtopic.php?pid=345945#p345945
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
Message posté par : TheoSB (theo.murcia.pro(a)gmail.com)
----------------------------------------
Bonjour,
Je suis dans la même situation que vous, avez-vous trouvé une solution ?
Merci d'avance. Théo
----------------------------------------
Le message est situé https://georezo.net/forum/viewtopic.php?pid=338055#p338055
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
Message posté par : preliator
----------------------------------------
Bonjour,
Je dispose d'une grande table spatiale qui contient de nombreux polygones (plus de 18 millions) avec un code insee. Sur un territoire en particulier, je souhaite obtenir la distance la plus courte qui sépare chaque polygone à un autre.
Pour cela, je me sers de la clause "cross join lateral" qui semble avoir de meilleures performances que "st_distance".
-----------------
Code :
select c.id, t.dist
from ma_table c cross join lateral (
select z.id, st_centroid(c.geom) <-> st_centroid(z.geom) as dist
from ma_table z
where c.id_parcelle > z.id_parcelle and c.id > z.id
order by st_centroid(c.geom) <-> st_centroid(z.geom)
limit 1
) t
where c.insee_com like '01%'
-----------------
Cette requete ne se termine jamais (même après 8h). En filtrant sur le département de l'Ain (01), je tombe le nombre d'entités à environ 2 millions pourtant.
Aurais-je oublié quelque chose ?
Merci.
----------------------------------------
Le message est situé https://georezo.net/forum/viewtopic.php?pid=347502#p347502
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
Message posté par : Theos2000
----------------------------------------
Bonjour tout l emonde,
J'essaye depuis quelques jours de refaire des isochrones avec la version de postgis 3.1.
Apres avoir non sans mal reussi a intégrer un réseau apparemment correct avec osm2pgrouting avec les fonctions addnodes, addtags mais je me retrouve bloqué sur la création d'isochrone. Les anciennes versions était basés sur du pgr_pointsAsPolygon, mais apparemment cette fonction a été déprécié par pgr_alphaShape.
J'essaye la requete suivante
-----------------
Code :
SELECT 1 As id, ST_SetSRID(pgr_alphaShape(
$$SELECT di.seq AS id, ST_X(v.the_geom) AS x, ST_Y(v.the_geom) As y
FROM pgr_drivingDistance(' SELECT gid As id, source, target,
cost_s AS cost, reverse_cost_s AS reverse_cost
FROM route_voiture.ways '»,25736 , 300, true
) AS di INNER JOIN route_voiture.ways_vertices_pgr AS v ON di.node = v.id$$
), 4326) As geom;
-----------------
Mais il me renvoit le message suivant
ERROR: ERREUR: parse error - invalid geometry
LINE 2: $$SELECT di.seq AS id, ST_X(v.the_geom) AS x, ST_Y(v.the_geo...
^
HINT: "SE" <-- parse error at position 2 within geometry
État SQL : XX000
Caractère : 44
Les requêtes pour récupérer les nœuds sembles fonctionner mais pour le polygone ca m'a l’air d'une autre histoire. En effet j'ai testé avec l'extension pgrouting de Qgis, aucune soucis pour trouver un plus court chemin.
Est ce que quelqu'un utilise cette fonction, j'ai essayé de trouver des exemples de requêtes sur le net se basant pgr_alphaShapemais sans succés pour l'instant....du coup je recherche des exemples pour faire une requête fonctionnelle.
Merci d'avance à la communauté
----------------------------------------
Le message est situé https://georezo.net/forum/viewtopic.php?pid=346986#p346986
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