Message posté par : Djperou
----------------------------------------
-----------------
Nicolas Ribot écrit :
-----------------
Theos2000 écrit :
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)
-----------------
Les différentes solutions marchent également, c'est juste un choix de votre part.
Le message d'erreur indique qu'une des valeurs est une chaine vide, non convertible en nombre.
Utilisez trim(), ou nullif() ou autre pour nettoyer les valeurs avant le cast.
Nicolas
-----------------
Exactement, soit tu attribues des coordonnées arbitraires aux lignes comme le dit Nicolas, soit si tu veux tu peux les retirer de tes traitements en y ajoutant une condition comme
-----------------
Code :
WHERE geolocalisation is not null
-----------------
Ça dépend si tu as besoin de l'intégralité de la base où si tu peux te permettre d'exclure les établissements qui n'ont pas été géolocalisés.
----------------------------------------
Le message est situé https://georezo.net/forum/viewtopic.php?pid=329456#p329456
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
----------------------------------------
-----------------
Theos2000 écrit :
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)
-----------------
Les différentes solutions marchent également, c'est juste un choix de votre part.
Le message d'erreur indique qu'une des valeurs est une chaine vide, non convertible en nombre.
Utilisez trim(), ou nullif() ou autre pour nettoyer les valeurs avant le cast.
Nicolas
----------------------------------------
Le message est situé https://georezo.net/forum/viewtopic.php?pid=329449#p329449
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
----------------------------------------
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