Message posté par : preliator
----------------------------------------
Bonjour,
Disposant d'une couche multilinestring représentant les routes d'un département, je souhaiterais couper cette couche en lignes de 500m.
Voici un aperçu de ma couche de routes : https://zupimages.net/viewer.php?id=20/16/eh9e.png
Après quelques recherche sur internet, je suis parti sur cette démarche :
- Regrouper ma couche de route en un seul bloc (j'ai trouvé cela cohérent car la couche de base est constitués de plusieurs lignes de tailles variables)
- Transformer ce bloc en linestring pour la requête suivante
- Créer des points tous les 500m le long de ma linestring avec st_lineinterpolatepoints (pas possible de créer les points sur ma couche regroupée, car cette fonction n'accepte que du linestring)
- Couper la couche regroupée sur cette couche de points.
-----------------
Code :
-- REGROUPER MA COUCHE DE ROUTE EN UN SEUL BLOC MULTILINESTRING
drop table if exists ligne_regroup;
create table ligne_regroup as
select St_linemerge(ST_Union(geom)) as geom
from public.route_echantillon;
-- TRANSFORMER LE BLOC EN LINESTRING
drop table if exists ligne_regroup_linestring;
CREATE TABLE ligne_regroup_linestring AS
SELECT (ST_Dump(ligne_regroup.geom)).geom::Geometry(LineString,2154) AS geom
FROM ligne_regroup;
-- CREER UN IDENTIFIANT UNIQUE SUR LA LINESTRING
alter table ligne_regroup_linestring add column id serial;
-- CREER LES POINT TOUS LES 500 METRES
drop table if exists point_500;
create table point_500 as
with tmp as(
select *
from ligne_regroup_linestring
where st_length(ligne_regroup_linestring.geom) > 500)
SELECT id, st_lineinterpolatepoints((tmp.geom),500/st_length(tmp.geom)) as geom
from tmp;
-- ON COUPE LA ROUTE REGROUPEE SUR LES POINTS
drop table if exists route_cut_500_metres;
create table route_cut_500_metres as
select ST_SNAP((ST_DUMP(st_difference(ligne_regroup.geom,point))).geom,all_point,0.1) as geom
from
(select ST_Multi(ST_Union(st_expand(point_500.geom, 0.05))) as point from point_500 ) as t1,
ligne_regroup,(select ST_MULTI(ST_COLLECT(point_500.geom))as all_point from point_500) as t2;
-----------------
Malheureusement, j'obtiens des résultats aberrants. Les lignes semblent bien se découper, mais il manque de nombreuses lignes.
Comme on peut voir sur l'exemple suivant : https://zupimages.net/viewer.php?id=20/16/oaem.png
En vert : ma couche de route regroupée (ligne_regroup)
En rouge : le résultat de "route_cut_500_metres"
Les points : Résultat de la requête qui me crée des points tous les 500 mètres.
Merci.
----------------------------------------
Le message est situé https://georezo.net/forum/viewtopic.php?pid=332169#p332169
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 couche de lignes de 3 entités qui s'intersectent.
https://zupimages.net/viewer.php?id=21/37/67j7.jpg
Je souhaiterais extraire les parties de lignes qui s'intersectent, et renseigner cette information d'auto-intersection dans une colonne (1 si le troncon intersecte d'autres lignes, 0 sinon par exemple).
L'objectif, c'est de transférer par la suite cette couche sur QGis et appliquer un décallage dans le style des couches extraites pour voir les zones où plusieurs lignes se croisent. Voici un exemple que j'avais réalisé sur des lignes très simples.
https://zupimages.net/viewer.php?id=21/37/yimr.jpg
Est-il possible de faire cela sur PostGis ? Je pose en pièce jointe l'exemple des lignes.
Merci.
----------------------------------------
Ce message est accompagné de fichiers, pour les télécharger, suivre le lien ci-dessous.
----------------------------------------
Le message est situé https://georezo.net/forum/viewtopic.php?pid=346378#p346378
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 : Marie10634
----------------------------------------
Bonjour à tous,
J'ai pas mal épluché les forums, mais je vous avoue ne pas arriver à transposer ce que j'ai pu lire à ma problématique .
Je travaille sous postgres 12.
J'ai trois tables:
table des zones t_zone
id_zone nom_zone
1 nom_zone1
2 nom_zone2
table des données date1 t_donnee1
id_donnee1 nom_zone valeur_donnee1 employe
1 nom_zone1 1 A
2 nom_zone1 2 B
3 nom_zone2 1 B
4 nom_zone2 2 A
table des données date2 t_donnee2
id_donnee2 nom_zone valeur_donnee2 employe
1 nom_zone1 1 B
2 nom_zone1 2 A
3 nom_zone2 1 A
4 nom_zone2 2 B
Je souhaiterai comme résultat
id_zone nom_zone v_donnee1 = 1 e_donne1 = 1 v_donne1 = 2 e_donne1 = 2 v_donnee2 = 1 e_donne2 = 1 v_donne2 = 2 e_donne2 = 2
1 nom_zone1 1 A 2 B 1 B 2 A
2 nom_zone2 1 B 2 A 1 A 2 B
J'ai essayé ce type de requêtes:
me multiplie autant de ligne que de valeurs possibles entre t_zone, t_donnee1 et t_donne2 (dans cet exemple 2^3)
-----------------
Code :
SELECT
t_zone.id_zone,
t_zone.nom_zone,
t_donne1.valeur_donne1,
t_donne1.employe,
t_donne2.valeur_donne2,
t_donne2.employe
FROM t_zone
LEFT JOIN t_donne1 ON t_zone.nom_zone = t_donne1.nom_zone
LEFT JOIN t_donne2 ON t_zone.nom_zone = t_donne2.nom_zone
-----------------
-----------------
Code :
SELECT
t_zone.id_zone,
t_zone.nom_zone,
t_donne1.valeur_donne1,
t_donne1.employe,
t_donne2.valeur_donne2,
t_donne2.employe
FROM t_zone
LEFT JOIN
(SELECT DISTINCT t_donne1.valeur_donne1, t_donne1.employe
FROM t_donne1
GROUP BY t_donne1.valeur_donne1, t_donne1.employe) t_donne1
ON t_zone.nom_zone = t_donne1.nom_zone
LEFT JOIN
(SELECT DISTINCT t_donne2.valeur_donne2, t_donne2.employe
FROM t_donne2
GROUP BY t_donne2.valeur_donne2, t_donne2.employe) t_donne2
ON t_zone.nom_zone = t_donne2.nom_zone
-----------------
me met un code erreur 21000 plus d'une ligne renvoyée par une sous-requête
-----------------
Code :
select
t_zone.id_zone,
t_zone.nom_zone,
(select t_donne1.valeur_donne1
from t_donne1
where t_zone.nom_zone = t_donne1.nom_zone) t_donne1_valeur_donne1,
(select t_donne1.employe
from t_donne1
where t_zone.nom_zone = t_donne1.nom_zone) t_donne1_employe,
(select t_donne2.valeur_donne2
from t_donne2
where t_zone.nom_zone = t_donne2.nom_zone) t_donne2_valeur_donne2,
(select t_donne2.employe
from t_donne2
where t_zone.nom_zone = t_donne2.nom_zone) t_donne2_employe
from t_zone
-----------------
Je tourne un peu (beaucoup) en rond et un peu d'aide m'éclairerait graaaaandement !
D'avance merci pour votre retour!
----------------------------------------
Le message est situé https://georezo.net/forum/viewtopic.php?pid=346371#p346371
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,
Je cherche à déterminer si mes buffers s'intersectent et si oui, si la valeur du champs "année" est inférieure d'un an ou supérieur d'un an.
-----------------
Code :
UPDATE anthro.tmp_buf_500m
SET recurrence = case when St_intersects(ST_Buffer(geom, 50), (select geom from anthro.tmp_buf_500m limit 1 ))
AND (select an_obs from anthro.tmp_act_orp_buf_500m limit 1) BETWEEN an_obs-1 AND an_obs+1 THEN 1 ELSE 0 end;
-----------------
Mais le résultat n'est pas cohérent.
----------------------------------------
Le message est situé https://georezo.net/forum/viewtopic.php?pid=346289#p346289
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
----------------------------------------
Mea culpa pour les erreurs j'ai pas copié le bon code, il n'y a qu'une seule table (tmp_buf_500m).
J'ai voulu initialement tester avec st_dwithin() cependant la fonction n'est pas reconnu (function does not exists) et je me souviens plus de la manip à faire (j'ai déjà eu ça avec d'autre fonction).
----------------------------------------
Le message est situé https://georezo.net/forum/viewtopic.php?pid=346312#p346312
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 : NicolasTau
----------------------------------------
Bonjour,
Je poste cet appel à l'aide car je suis bloqué avec un fichier sql et un nouvel ordinateur, et je n'arrive pas à importer mon fichier dans le pgAdmin tout juste installé.
Avant de changer d'ordinateur, j'avais exporté mes données dans un fichier sql pour pouvoir les réimporter plus tard avec mon nouvel ordinateur.
Maintenant que je l'ai, j'ai installé postgre, pgAdmin et l'extension postgis dont je me servais. J'ai alors essayé de le réimporter mais j'ai le message :
File type not suported"
J'ai pourtant exactement la même version du logiciel... je ne comprend pas bien...
Je vous mets aussi mon fichier sql en pièce jointe (si le fichier n'est pas trop lourd), si jamais il y a un problème avec.
Merci beaucoup,
Bonne journée,
Cordialement,
Nicolas
----------------------------------------
Le message est situé https://georezo.net/forum/viewtopic.php?pid=345627#p345627
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 à tous,
Je viens d'installer un serveur PG sur mon PC Windows 10 pour une utilisation locale.
J'ai eu un message d'erreur au moment de la création de la base de données (cluster), que je n'ai malheureusement pas non noté (je pense en lien avec des droits utilisateur), mais j'ai ensuite réussi à créer une base avec
-----------------
Code :
initdb.exe "D:\DATAPG"
-----------------
J'ai ainsi réussi à connecter PgAdmin ou QGis, et créer mes premières bases/schémas/tables :D
Par contre, je rencontre un comportement étrange de l'invite de commande Windows quand je démarre le serveur. Peut-être est-ce normal, mais je ne crois pas que ça faisait cela sur mes précédents PC/instances.
Quand je fais :
-----------------
Code :
pg_ctl start -D "D:\DATAPG"
-----------------
Le serveur démarre bien, et j'ai cette réponse :
-----------------
Code :
U:\>pg_ctl start -D "D:\DATAPG"
en attente du démarrage du serveur....2021-08-27 10:09:19.299 CEST [11512] LOG: démarrage de PostgreSQL 13.4, compiled by Visual C++ build 1914, 64-bit
2021-08-27 10:09:19.308 CEST [11512] LOG: en écoute sur IPv4, adresse « 127.0.0.1 », port 5432
2021-08-27 10:09:19.308 CEST [11512] LOG: en écoute sur IPv6, adresse « ::1 », port 5432
2021-08-27 10:09:19.414 CEST [12836] LOG: le système de bases de données a été arrêté à 2021-08-27 10:09:01 CEST
2021-08-27 10:09:19.626 CEST [11512] LOG: le système de bases de données est prêt pour accepter les connexions
effectué
serveur démarré
-----------------
Mais ensuite, si je tente de fermer l'invite de commande, celle-ci ne se ferme pas et m'affiche ces messages supplémentaires :
-----------------
Code :
U:\>2021-08-27 10:09:22.957 CEST [11512] LOG: processus en tâche de fond « logical replication launcher » (PID 3436) a été arrêté par l'exception 0xC000013A
2021-08-27 10:09:22.957 CEST [11512] ASTUCE : Voir le fichier d'en-tête C « ntstatus.h » pour une description de la valeur
hexadécimale.
2021-08-27 10:09:22.957 CEST [11512] LOG: arrêt des autres processus serveur actifs
2021-08-27 10:09:22.961 CEST [11512] LOG: processus de récupération des statistiques (PID 12876) a été arrêté par l'exception 0xC000013A
2021-08-27 10:09:22.961 CEST [11512] ASTUCE : Voir le fichier d'en-tête C « ntstatus.h » pour une description de la valeur
hexadécimale.
2021-08-27 10:09:22.973 CEST [11512] LOG: tous les processus serveur sont arrêtés ; réinitialisation
2021-08-27 10:09:23.071 CEST [11596] LOG: le système de bases de données a été interrompu ; dernier lancement connu à 2021-08-27 10:09:19 CEST
2021-08-27 10:09:23.750 CEST [11596] LOG: le système de bases de données n'a pas été arrêté proprement ; restauration
automatique en cours
2021-08-27 10:09:23.756 CEST [11596] LOG: longueur invalide de l'enregistrement à 0/21D72A0 : voulait 24, a eu 0
2021-08-27 10:09:23.756 CEST [11596] LOG: la ré-exécution n'est pas nécessaire
2021-08-27 10:09:23.989 CEST [11512] LOG: le système de bases de données est prêt pour accepter les connexions
-----------------
Voyez-vous d'où vient ce comportement ? Normal ?
Je vais creuser pour faire en sorte que le serveur se lance automatiquement au démarrage de Windows : si vous avez une solution simple à me proposer, je veux bien ;)
Merci pour vos conseils !
----------------------------------------
Le message est situé https://georezo.net/forum/viewtopic.php?pid=345871#p345871
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,
Est-ce-qu'il est possible d'utiliser des variables dans un script sql ? en gros utiliser des variables pour le nom des tables ? Je sais que sur pgsl il suffit de mettre SET nom variable = valeur variable. Mais dans postgresql ?
----------------------------------------
Le message est situé https://georezo.net/forum/viewtopic.php?pid=345844#p345844
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 Vaginay
----------------------------------------
Bonjour,
Merci pour ces réponses!
----------------------------------------
Le message est situé https://georezo.net/forum/viewtopic.php?pid=345843#p345843
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 réalisé une requête pour joindre l'identifiant du tronçon hydro le plus proche de mes points et sa distance sous Postgis :
-----------------
Code :
CREATE TABLE polluant.JoinHydroPkTopt as
select
p.pk,
t.id as troncon,
t.dist
from reference."parcelle" p
cross join lateral (
select r.id as id, p.geom <-> r.the_geom as dist
from polluant."hydro" r
order by p.geom <-> r.the_geom
limit 1
) as t;
-----------------
la requête fonctionne mais prend une plombe comparativement à l'outil de jointure par proximité d'arcgis donc je présume qu'elle peut être améliorée.
----------------------------------------
Le message est situé https://georezo.net/forum/viewtopic.php?pid=345808#p345808
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