Message posté par : Theos2000
----------------------------------------
En fait la solution se trouve dans la fonction de postgres split_part, ça marche assez bien.
Aprés dans la suite du processus je n'arrive pas a transformer mes champs, ca me fait le message suivant syntaxe en entrée invalide pour le type numeric : « »
Le fait de caster des élement de coordonnées de texte en numérique qui bloque, et je ne trouve pas le moyen de les transformer (::real, ::numeric)
----------------------------------------
Le message est situé https://georezo.net/forum/viewtopic.php?pid=329448#p329448
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
----------------------------------------
-----------------
Nicolas Ribot écrit :
-----------------
tumasgiu écrit :
-----------------
Nicolas Ribot écrit :
Avec une regexp:
-----------------
Code :
with tmp as (
select regexp_matches(geoloc_etablissement, '[-+]?[0-9]*\.?[0-9]+', 'g') as coords
from sirene
) select coords[1] as latitude, coords[2] as longitude;
-----------------
(je ne comprends rien à cette regexp, je l'ai trouvée sur le net :D )
Nicolas
-----------------
[-+]? : zero ou une fois le symbole - ou +
[0-9]* : zero ou plusieurs symbole numérique
\.? : zero ou un symbole '.' (\ pour échapper ., qui signifie normalement : n'importe quel symbole)
[0-9]+ : au moins un symbole numérique
-----------------
Merci.
chaque partie, ca va a peu près, mais de là à pouvoir l'écrire sans google, j'ai encore du taf ;) )
-----------------
Si tu veux t'entrainer : https://regexcrossword.com/
----------------------------------------
Le message est situé https://georezo.net/forum/viewtopic.php?pid=329440#p329440
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
----------------------------------------
-----------------
tumasgiu écrit :
-----------------
Nicolas Ribot écrit :
Avec une regexp:
-----------------
Code :
with tmp as (
select regexp_matches(geoloc_etablissement, '[-+]?[0-9]*\.?[0-9]+', 'g') as coords
from sirene
) select coords[1] as latitude, coords[2] as longitude;
-----------------
(je ne comprends rien à cette regexp, je l'ai trouvée sur le net :D )
Nicolas
-----------------
[-+]? : zero ou une fois le symbole - ou +
[0-9]* : zero ou plusieurs symbole numérique
\.? : zero ou un symbole '.' (\ pour échapper ., qui signifie normalement : n'importe quel symbole)
[0-9]+ : au moins un symbole numérique
-----------------
Merci.
chaque partie, ca va a peu près, mais de là à pouvoir l'écrire sans google, j'ai encore du taf ;) )
----------------------------------------
Le message est situé https://georezo.net/forum/viewtopic.php?pid=329438#p329438
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
----------------------------------------
-----------------
tumasgiu écrit :
Un autre moyen sale :
-----------------
Code :
SELECT
('POINT' || replace(geoloc_etablissement, ',', ' '))::geometry('POINT', 4626)
FROM
sirene
;
-----------------
-----------------
Ah oui joli :)
----------------------------------------
Le message est situé https://georezo.net/forum/viewtopic.php?pid=329437#p329437
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
----------------------------------------
-----------------
Nicolas Ribot écrit :
Avec une regexp:
-----------------
Code :
with tmp as (
select regexp_matches(geoloc_etablissement, '[-+]?[0-9]*\.?[0-9]+', 'g') as coords
from sirene
) select coords[1] as latitude, coords[2] as longitude;
-----------------
(je ne comprends rien à cette regexp, je l'ai trouvée sur le net :D )
Nicolas
-----------------
[-+]? : zero ou une fois le symbole - ou +
[0-9]* : zero ou plusieurs symbole numérique
\.? : zero ou un symbole '.' (\ pour échapper ., qui signifie normalement : n'importe quel symbole)
[0-9]+ : au moins un symbole numérique
----------------------------------------
Le message est situé https://georezo.net/forum/viewtopic.php?pid=329436#p329436
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
----------------------------------------
Un autre moyen sale :
-----------------
Code :
SELECT
('POINT' || replace(geoloc_etablissement, ',', ' '))::geometry('POINT')
FROM
sirene
;
-----------------
----------------------------------------
Le message est situé https://georezo.net/forum/viewtopic.php?pid=329433#p329433
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
----------------------------------------
-----------------
Nicolas Ribot écrit :
Bonjour,
Un moyen bien crad' (virer les parenthèses et fabriquer un tableau de valeurs en prenant ',' comme séparateur):
-----------------
Code :
with tmp as (
select string_to_array(replace(replace(geoloc_etablissement, '(', ''), ')', ''), ',') as coords
from sirene
) select coords[1] as latitude, coords[2] as longitude;
-----------------
Pour fabriquer un point, il suffira de faire: st_setSRID(st_makePoint(coords[2], coords[1]), 4326)
-----------------
Petite erreur: faut effectivement caster en float:
-----------------
Code :
st_setSRID(st_makePoint((coords[2])::float, (coords[1])::float), 4326)
-----------------
Nico
----------------------------------------
Le message est situé https://georezo.net/forum/viewtopic.php?pid=329432#p329432
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
----------------------------------------
Avec une regexp:
-----------------
Code :
with tmp as (
select regexp_matches(geoloc_etablissement, '[-+]?[0-9]*\.?[0-9]+', 'g') as coords
from sirene
) select coords[1] as latitude, coords[2] as longitude;
-----------------
(je ne comprends rien à cette regexp, je l'ai trouvée sur le net :D )
Nicolas
----------------------------------------
Le message est situé https://georezo.net/forum/viewtopic.php?pid=329431#p329431
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 : Djperou
----------------------------------------
Bonjour,
J'imagine que la colonne est en texte. Du coup tu peux utiliser split_part(<texte>,<délimiteur>,<colonne à renvoyer>) pour retrouver tes deux colonnes :
-----------------
Code :
SELECT split_part( "geolocalisation de établissement" , ',' , 1 ) as latitude,
split_part( "geolocalisation de établissement" , ',' , 2 ) as longitude
FROM sirene_v3
-----------------
Je ne sais pas comment tu veux utiliser cette info mais tu devras peut être utiliser la fonction CAST pour déclarer en real tes datas, ou encore utiliser ST_MakePoint() si tu veux les géométries PostGis de ces points.
J'espère que ça t'aidera
Bonne journée,
----------------------------------------
Le message est situé https://georezo.net/forum/viewtopic.php?pid=329430#p329430
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,
Un moyen bien crad' (virer les parenthèses et fabriquer un tableau de valeur en prenant ',' comme séparateur):
-----------------
Code :
with tmp as (
select string_to_array(replace(replace(geoloc_etablissement, '(', ''), ')', ''), ',') as coords
from sirene
) select coords[1] as latitude, coords[2] as longitude;
-----------------
Pour fabriquer un point, il suffira de faire: st_setSRID(st_makePoint(coords[2], coords[1]), 4326)
Ca serait plus propre avec une expression régulière mais je n'y arrive pas :)
Nicolas
----------------------------------------
Le message est situé https://georezo.net/forum/viewtopic.php?pid=329428#p329428
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