Message posté par : franck06
----------------------------------------
Merci beaucoup à vous, nous allons mettre entre oracle et post gis des scripts FME pour une actualisation quotidienne des différentes tables exploitées
----------------------------------------
Le message est situé https://georezo.net/forum/viewtopic.php?pid=324658#p324658
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 : Nicolas Ribot
----------------------------------------
-----------------
franck06 écrit :
Lorsque j'interroge un point adresse voici ce qui est renseigné dans le champ géométrie
SQL> select geometrie from num_voirie where cle_oracle='4680877';
GEOMETRIE(SDO_GTYPE, SDO_SRID, SDO_POINT(X, Y, Z), SDO_ELEM_INFO, SDO_ORDINATES)
--------------------------------------------------------------------------------
SDO_GEOMETRY(2001, 2154, SDO_POINT_TYPE(1024570,4, 6282014,4, NULL), NULL, NULL)
SQL
Faut il géocoder? il ne me semble pas
Merci
-----------------
Non c'est bon, la table num_voirie contient bien une geom Oracle point.
Si vous voulez limiter les transferts de données, la conversion d'une bd à l'autre, etc., il existe un Foreign Data Wrapper Oracle (https://github.com/laurenz/oracle_fdw).
Il vous permettra de définir dans PG une table virtuelle pointant sur la table Oracle, vous pourrez alors faire des requetes sur cette table depuis Postgis.
Par exemple, pour créer dans Postgis une table des cercles des adresses:
-----------------
Code :
create table voirie_cercle as
select st_buffer(geometrie, 50) from num_voirie_fdw where cle_oracle='4680877';
-----------------
ici, num_voirie_fdw est la FOREIGN TABLE pointant sur la table Oracle, qu'il faudra créer avant (cf doc FDW)
Nicolas
----------------------------------------
Le message est situé https://georezo.net/forum/viewtopic.php?pid=324653#p324653
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 : franck06
----------------------------------------
le tronçon est aussi un champ de la table num_voirie (le numéro adresse) pour faire le lien entre le numéro de la rue et son nom
----------------------------------------
Le message est situé https://georezo.net/forum/viewtopic.php?pid=324652#p324652
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 : franck06
----------------------------------------
Lorsque j'interroge un point adresse voici ce qui est renseigné dans le champ géométrie
SQL> select geometrie from num_voirie where cle_oracle='4680877';
GEOMETRIE(SDO_GTYPE, SDO_SRID, SDO_POINT(X, Y, Z), SDO_ELEM_INFO, SDO_ORDINATES)
--------------------------------------------------------------------------------
SDO_GEOMETRY(2001, 2154, SDO_POINT_TYPE(1024570,4, 6282014,4, NULL), NULL, NULL)
SQL
Faut il géocoder? il ne me semble pas
Merci
----------------------------------------
Le message est situé https://georezo.net/forum/viewtopic.php?pid=324650#p324650
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 : Nicolas Ribot
----------------------------------------
-----------------
franck06 écrit :
Merci à vous, je débute avec postgis (avant sur oracle) et qgis donc je repars de la base.
version postgresql9.5.12.2.
Oui nous nous repérons à l'adresse exacte c.a.d au numéri de rue qui possèdent un x,y.
merci à vous
-----------------
Ah ! Alors le lien vers le troncon ne sert pas vraiment dans ce cas, si ?
-----------------
Code :
select id_adresse, st_buffer(geom, 50) as cercle1, st_buffer(geom, 100) as cercle2
-----------------
Ou si vous voulez une seule geom avec deux cercles:
-----------------
Code :
select id_adresse, st_collect(st_buffer(geom, 50) , st_buffer(geom, 100)) as cercles
-----------------
Nico
----------------------------------------
Le message est situé https://georezo.net/forum/viewtopic.php?pid=324649#p324649
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 : Nicolas Ribot
----------------------------------------
Si ce sont bien les adresses qui doivent etre entourées, voici une fonction plpython, appelable en SQL, qui geocode une serie d'adresses et renvoie un ensemble de docs JSON avec champs remplis par le geocodeur (meme structure que le doc renvoyé par le geocodeur):
• La fonction prend une requete SQL qui doit renvoyer les champs ids, voie, ville, cp: ids est un tableau des id à géocoder, histoire de pouvoir faire un update sur la table (tableau car dans mon cas, j'avais une table avec plusieurs adresses identiques et je en voulais pas appeler le geocodeur plusieurs fois pour la meme adresse)
• Elle construit le csv en mémoire et l'envoie au géocodeur, puis retourne un objet jsonb par adresse géocodée, cet objet contient les lat/long de l'adresse:
-----------------
Code :
drop function geocode_add(query text);
create or replace function geocode_add(query text)
RETURNS setof jsonb as
$$
import csv
import io
from collections import OrderedDict
import requests
import json
with io.BytesIO(b"") as stream:
writer = csv.writer(stream, delimiter=',', quotechar='"', quoting=csv.QUOTE_MINIMAL)
writer.writerow(["ids", "voie", "ville", "cp"])
for row in plpy.cursor(query):
# writes row in csv to csv stream
writer.writerow([row['ids'], row['voie'], row['ville'], row['cp']])
requests_session = requests.Session()
kwargs = {
'data': OrderedDict([
('columns', ['voie', 'ville', 'cp']),
('postcode', 'cp')
]),
'method': 'post',
'files': OrderedDict([
('data', ('addpg.csv',stream.getvalue()))
]),
'stream': True,
'url': 'https://api-adresse.data.gouv.fr/search/csv/'
}
response = requests_session.request(**kwargs)
for row in csv.DictReader(response.text.encode('utf-8').splitlines()):
yield json.dumps(row)
$$ language plpythonu VOLATILE;
-----------------
La fonction s'utilise comme ceci pour extraire les infos des documents retournés:
-----------------
Code :
select t->>'ids' as ids, t->>'result_label' as adr,
st_astext(st_transform(
st_setSRID(
st_makePoint((t->>'longitude')::float, (t->>'latitude')::float), 4326), 2154)) as geom
from geocode_add($$select '{1}'::text[] as ids, '2, place du capitole' as voie, 'TOulouse' as ville, '31000' as cp$$) as t;
ids adr geom
['1'] Place du Capitole 31000 Toulouse POINT(574291.035317137 6279607.04961392)
-----------------
Nico
----------------------------------------
Le message est situé https://georezo.net/forum/viewtopic.php?pid=324647#p324647
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 : franck06
----------------------------------------
Merci à vous, je débute avec postgis (avant sur oracle) et qgis donc je repars de la base.
version postgresql9.5.12.2.
Oui nous nous repérons à l'adresse exacte c.a.d au numéri de rue qui possèdent un x,y.
merci à vous
----------------------------------------
Le message est situé https://georezo.net/forum/viewtopic.php?pid=324646#p324646
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 : T. Rossini
----------------------------------------
-----------------
Citation :
(ah je vois que tumasgiu a répondu déjà wink )
-----------------
Oui, et comme d'habitude trop vite,
j'avais compris que c'était le tronçon qui devait être entouré...
----------------------------------------
Le message est situé https://georezo.net/forum/viewtopic.php?pid=324645#p324645
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 : Nicolas Ribot
----------------------------------------
Bonjour,
Si les adresses ne disposent pas d'une géométrie ponctuelle exacte, il va falloir que vous géocodiez ces adresses pour avoir ces points, sinon vous ne pourrez pas créer des cercles centrés sur les adresses
(pour créer ces cercles: st_buffer(geom_adresse, 50) et st_buffer(geom_adresse, 100))
Vous pouvez géocoder des adresses avec le géocodeur data.gouv.fr en ligne (https://adresse.data.gouv.fr/csv). Ca peut se faire depuis PG avec une fonction python ou un FDW qui se connecte au géocodeur et envoie les adresses de votre table.
(ah je vois que tumasgiu a répondu déjà ;) )
Nicolas
----------------------------------------
Le message est situé https://georezo.net/forum/viewtopic.php?pid=324644#p324644
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 : T. Rossini
----------------------------------------
Salut,
si votre version de postgis le permet vous pouvez
utiliser la fonction ST_MinimumBoundingCircle, au nom
assez explicite.
Ensuite avec la fonction st_Buffer, vous pourrez faire "gonfler"
vos cercles.
----------------------------------------
Le message est situé https://georezo.net/forum/viewtopic.php?pid=324643#p324643
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