Message posté par : hadri45
----------------------------------------
Bonjour,
Je dois réaliser des croisements de couches forestières afin d'enrichir la base de données des Forêts officielle. Pour cette opération, le mieux est d'utiliser la fonction Union d'ArcGIS mais j'ai l'obligation de réaliser cela sous Postgres/PostGIS. Pour se faire, j'ai donc vu qu'il fallait réaliser cela en 2 étapes avec d'abord l'intersection pour les deux couches qui s'intersectent puis avec INSERT INTO, récupérer celle qui ne s'intersecte pas avec le ST_DIFFERENCE.
Voici le code où je dois réaliser deux croisements tout en gardant les attributs (code_psg,code_onf et tfv) pour des analyses complémentaires.
Ce code me donne le bon résultat mais vu que je dois réaliser ce traitement pour la France entière il me faut l'optimiser le plus possible sachant que sur un département cela prend plus de 2h30 alors que sur ArcGIS le traitement prend 4 minutes.
-----------------
Code :
-- TABLE DU CROISEMENT PRO / PSG
DROP TABLE IF EXISTS surface_unitaire_01.propsg_01;
-- 1. Intersection
CREATE TABLE surface_unitaire_01.propsg_01 AS
SELECT o.code_onf, p.code AS code_psg, ST_SetSRID((ST_Dump(ST_Intersection(o.geom, p.geom))).geom, 932006) AS geom
FROM surface_unitaire_01.pro_2018_simple_01 o
INNER JOIN surface_unitaire_01.psg_2018_simple_01 p ON (o.geom && p.geom AND ST_Intersects(o.geom, p.geom));
-- Nettoyage des géométries invalides
DELETE FROM surface_unitaire_01.propsg_01 WHERE ST_GeometryType(geom) != 'ST_Polygon';
CREATE INDEX sp_idx_propsg_01_geom ON surface_unitaire_01.propsg_01 USING GIST (geom);
ANALYZE surface_unitaire_01.propsg_01;
-- 2. Différences PRO - PSG et PSG - PRO
CREATE TEMP TABLE pro_union AS
SELECT code_onf, ST_Union(geom) AS geom
FROM surface_unitaire_01.propsg_01
GROUP BY code_onf;
CREATE INDEX sp_idx_pro_union_geom ON pro_union USING GIST (geom);
ANALYZE pro_union;
CREATE TEMP TABLE psg_union AS
SELECT code_psg, ST_Union(geom) AS geom
FROM surface_unitaire_01.propsg_01
GROUP BY code_psg;
CREATE INDEX sp_idx_psg_union_geom ON psg_union USING GIST (geom);
ANALYZE psg_union;
DROP INDEX surface_unitaire_01.sp_idx_propsg_01_geom;
INSERT INTO surface_unitaire_01.propsg_01
SELECT o.code_onf, NULL::VARCHAR(3) AS code_psg, (ST_Dump(ST_Difference(o.geom, ST_SetSRID(COALESCE(t1.geom, 'GEOMETRYCOLLECTION EMPTY'::GEOMETRY), 932006)))).geom AS geom
FROM surface_unitaire_01.pro_2018_simple_01 o
LEFT JOIN pro_union t1 ON o.code_onf = t1.code_onf
UNION
SELECT NULL::VARCHAR(3) AS code_onf, p.code AS code_psg, (ST_Dump(ST_Difference(p.geom, ST_SetSRID(COALESCE(t2.geom, 'GEOMETRYCOLLECTION EMPTY'::GEOMETRY), 932006)))).geom AS geom
FROM surface_unitaire_01.psg_2018_simple_01 p
LEFT JOIN psg_union t2 ON p.code = t2.code_psg;
-- Nettoyage des géométries invalides
SELECT DISTINCT ST_GeometryType(geom) FROM surface_unitaire_01.propsg_01;
SELECT DISTINCT ST_SRID(geom) FROM surface_unitaire_01.propsg_01;
SELECT COUNT(*) FROM surface_unitaire_01.propsg_01 WHERE NOT ST_IsValid(geom);
DELETE FROM surface_unitaire_01.propsg_01 WHERE ST_GeometryType(geom) != 'ST_Polygon';
CREATE INDEX sp_idx_propsg_01_geom ON surface_unitaire_01.propsg_01 USING GIST (geom);
ANALYZE surface_unitaire_01.propsg_01;
DROP TABLE pro_union;
DROP TABLE psg_union;
-- contrôles de surfaces
SELECT 'couche onf' AS origine, code_onf, SUM(ST_Area(geom)) AS surface_total
FROM surface_unitaire_01.pro_2018_simple_01
GROUP BY origine, code_onf
UNION
SELECT 'croisement' AS origine, code_onf, SUM(ST_Area(geom)) AS surface_total
FROM surface_unitaire_01.propsg_01
GROUP BY origine, code_onf
ORDER BY code_onf, origine;
SELECT 'couche psg' AS origine, code AS code_psg, SUM(ST_Area(geom)) AS surface_total
FROM surface_unitaire_01.psg_2018_simple_01
GROUP BY origine, code_psg
UNION
SELECT 'croisement' AS origine, code_psg, SUM(ST_Area(geom)) AS surface_total
FROM surface_unitaire_01.propsg_01
GROUP BY origine, code_psg
ORDER BY code_psg, origine;
SELECT DISTINCT st_geometrytype(geom)
FROM surface_unitaire_01.bd_foret_01_simple
SELECT id_foret, ST_NPoints(geom), ST_MemSize(geom)
FROM surface_unitaire_01.bd_foret_01_simple
ORDER BY ST_NPoints DESC;
SELECT COUNT(*), COUNT(*) FILTER (WHERE ST_MemSize(geom) > 8192)
FROM surface_unitaire_01.bd_foret_01_simple;
CREATE TABLE surface_unitaire_01.bd_foret_01_simple_sub AS
SELECT id_foret, tfv, ST_SubDivide(geom) AS geom
FROM surface_unitaire_01.bd_foret_01_simple;
CREATE INDEX idx_foret_geom_sub_01 ON surface_unitaire_01.bd_foret_01_simple_sub USING GIST (geom);
CREATE TABLE surface_unitaire_01.propsg_01_sub
AS SELECT ST_SUBDIVIDE(geom) as geom, code_onf,code_psg
FROM surface_unitaire_01.propsg_01
-- TABLE DU CROISEMENT BD_FORET / PRO_PSG
DROP TABLE IF EXISTS surface_unitaire_01.final_cedric_01;
-- 1. Intersection
CREATE TABLE surface_unitaire_01.final_cedric_01 AS
SELECT p.code_onf, p.code_psg, b.tfv, ST_SetSRID((ST_Dump(ST_Intersection(ST_Buffer(p.geom, 0.0000001), b.geom))).geom, 932006) AS geom
FROM surface_unitaire_01.propsg_01 p
INNER JOIN surface_unitaire_01.bd_foret_01_simple_sub b ON (p.geom && b.geom AND ST_Intersects(p.geom, b.geom));
-- Nettoyage des géométries invalides
SELECT DISTINCT ST_GeometryType(geom) FROM surface_unitaire_01.final_cedric_01;
DELETE FROM surface_unitaire_01.final_cedric_01 WHERE ST_GeometryType(geom) != 'ST_Polygon';
CREATE INDEX sp_idx_final_cedric_01_geom ON surface_unitaire_01.final_cedric_01 USING GIST (geom);
ANALYZE surface_unitaire_01.final_cedric_01;
-- 2. Différences BD_FORET - PRO_PSG et PRO_PSG - BD_FORET
DROP TABLE IF EXISTS pro_psg;
CREATE TEMP TABLE pro_psg AS
SELECT code_onf, code_psg,geom
FROM surface_unitaire_01.final_cedric_01;
CREATE INDEX sp_idx_pro_psg_geom ON pro_psg USING GIST (geom);
ANALYZE pro_psg;
DROP TABLE IF EXISTS tfv;
CREATE TEMP TABLE tfv AS
SELECT tfv, geom
FROM surface_unitaire_01.final_cedric_01;
CREATE INDEX sp_idx_tfv_geom ON tfv USING GIST (geom);
ANALYZE tfv;
DROP INDEX surface_unitaire_01.sp_idx_final_cedric_01_geom;
INSERT INTO surface_unitaire_01.final_cedric_01
SELECT p.code_onf, p.code_psg, NULL::VARCHAR(10) AS tfv, (ST_Dump(ST_Difference(p.geom, ST_SetSRID(COALESCE(t1.geom, 'GEOMETRYCOLLECTION EMPTY'::GEOMETRY), 932006)))).geom AS geom
FROM surface_unitaire_01.propsg_01_sub p
LEFT JOIN pro_psg as t1 ON p.code_onf = t1.code_onf AND p.code_psg = t1.code_psg
UNION
SELECT NULL::VARCHAR(3) AS code_onf, NULL::VARCHAR(3) AS code_psg, t.tfv, (ST_Dump(ST_Difference(t.geom, ST_SetSRID(COALESCE(t2.geom, 'GEOMETRYCOLLECTION EMPTY'::GEOMETRY), 932006)))).geom AS geom
FROM surface_unitaire_01.bd_foret_01_simple_sub t
LEFT JOIN tfv t2 ON t.tfv = t2.tfv;
CREATE INDEX sp_idx_final_cedric_01_geom ON surface_unitaire_01.final_cedric_01 USING GIST (geom);
ANALYZE surface_unitaire_01.propsg_01;
DROP TABLE pro_psg_union;
DROP TABLE IF EXISTS tfv_union;
DROP TABLE tfv;
-----------------
J'ai donc essayé de subdiviser ce qui accélère les temps de traitements mais le plus gros problème reste le dernier ST_DIFFERENCE entre la bd_foret et pro_psg qui est toujours aussi long malgré cette subdivision et ne permet pas de valider le code. J'ai également essayé de transformer les géométries en tuile (MapVector Tile) avec ST_ASMVTGeom mais cela est encore plus long. J'ai également essayé de faire sans le ST_UNION ou ST_COLLECT mais cela ne change pas beaucoup le temps de traitement.
Ma couche principale est de l'ordre de plus de 25000 entités et les autres couches à croiser sont autour de 2000.
Pour la configuration, je suis sous PostgreSQL 12 et PostGIS 3.0.
Auriez-vous donc une idée afin d'optimiser le traitement ?
Merci,
----------------------------------------
Le message est situé https://georezo.net/forum/viewtopic.php?pid=335212#p335212
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 : Ricola62
----------------------------------------
Bonjour,
Je m'interroge concernant l'architecture de ma base de donnée à adopter afin d'avoir le maximum de sécurité.
Il me faut réaliser d'un coté une webapp pour la consultation et permettant la génération de document pdf et de l'autre une partie saisie qui enrichira la base de donnée. Je me posais la question d'avoir une base de donnée temporaire (pour la saisie) et basculer les données dans bdd consultation lorsque celles ci sont validées (par l'admninistrateur) via une automatisation chaque début de semaine par exemple, ce qui permettrait d'éviter les coquilles lors de la consultation sur la webapp.
J'aimerais avoir vos avis sur la question et quelques suggestions.
Merci d'avance
----------------------------------------
Le message est situé https://georezo.net/forum/viewtopic.php?pid=335300#p335300
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 : hadri45
----------------------------------------
Bonjour,
Je dois réaliser des croisements de couches forestières afin d'enrichir la base de données des Forêts officielle. Pour cette opération, le mieux est d'utiliser la fonction Union d'ArcGIS mais j'ai l'obligation de réaliser cela sous Postgres/PostGIS. Pour se faire, j'ai donc vu qu'il fallait réaliser cela en 2 étapes avec d'abord l'intersection pour les deux couches qui s'intersectent puis avec INSERT INTO, récupérer celle qui ne s'intersecte pas avec le ST_DIFFERENCE.
Voici le code où je dois réaliser deux croisements tout en gardant les attributs (code_psg,code_onf et tfv) pour des analyses complémentaires.
Ce code me donne le bon résultat mais vu que je dois réaliser ce traitement pour la France entière il me faut l'optimiser le plus possible sachant que sur un département cela prend plus de 2h30 alors que sur ArcGIS le traitement prend 4 minutes.
-----------------
Code :
-- TABLE DU CROISEMENT PRO / PSG
DROP TABLE IF EXISTS surface_unitaire_01.propsg_01;
-- 1. Intersection
CREATE TABLE surface_unitaire_01.propsg_01 AS
SELECT o.code_onf, p.code AS code_psg, ST_SetSRID((ST_Dump(ST_Intersection(o.geom, p.geom))).geom, 932006) AS geom
FROM surface_unitaire_01.pro_2018_simple_01 o
INNER JOIN surface_unitaire_01.psg_2018_simple_01 p ON (o.geom && p.geom AND ST_Intersects(o.geom, p.geom));
-- Nettoyage des géométries invalides
DELETE FROM surface_unitaire_01.propsg_01 WHERE ST_GeometryType(geom) != 'ST_Polygon';
CREATE INDEX sp_idx_propsg_01_geom ON surface_unitaire_01.propsg_01 USING GIST (geom);
ANALYZE surface_unitaire_01.propsg_01;
-- 2. Différences PRO - PSG et PSG - PRO
CREATE TEMP TABLE pro_union AS
SELECT code_onf, ST_Union(geom) AS geom
FROM surface_unitaire_01.propsg_01
GROUP BY code_onf;
CREATE INDEX sp_idx_pro_union_geom ON pro_union USING GIST (geom);
ANALYZE pro_union;
CREATE TEMP TABLE psg_union AS
SELECT code_psg, ST_Union(geom) AS geom
FROM surface_unitaire_01.propsg_01
GROUP BY code_psg;
CREATE INDEX sp_idx_psg_union_geom ON psg_union USING GIST (geom);
ANALYZE psg_union;
DROP INDEX surface_unitaire_01.sp_idx_propsg_01_geom;
INSERT INTO surface_unitaire_01.propsg_01
SELECT o.code_onf, NULL::VARCHAR(3) AS code_psg, (ST_Dump(ST_Difference(o.geom, ST_SetSRID(COALESCE(t1.geom, 'GEOMETRYCOLLECTION EMPTY'::GEOMETRY), 932006)))).geom AS geom
FROM surface_unitaire_01.pro_2018_simple_01 o
LEFT JOIN pro_union t1 ON o.code_onf = t1.code_onf
UNION
SELECT NULL::VARCHAR(3) AS code_onf, p.code AS code_psg, (ST_Dump(ST_Difference(p.geom, ST_SetSRID(COALESCE(t2.geom, 'GEOMETRYCOLLECTION EMPTY'::GEOMETRY), 932006)))).geom AS geom
FROM surface_unitaire_01.psg_2018_simple_01 p
LEFT JOIN psg_union t2 ON p.code = t2.code_psg;
-- Nettoyage des géométries invalides
SELECT DISTINCT ST_GeometryType(geom) FROM surface_unitaire_01.propsg_01;
SELECT DISTINCT ST_SRID(geom) FROM surface_unitaire_01.propsg_01;
SELECT COUNT(*) FROM surface_unitaire_01.propsg_01 WHERE NOT ST_IsValid(geom);
DELETE FROM surface_unitaire_01.propsg_01 WHERE ST_GeometryType(geom) != 'ST_Polygon';
CREATE INDEX sp_idx_propsg_01_geom ON surface_unitaire_01.propsg_01 USING GIST (geom);
ANALYZE surface_unitaire_01.propsg_01;
DROP TABLE pro_union;
DROP TABLE psg_union;
-- contrôles de surfaces
SELECT 'couche onf' AS origine, code_onf, SUM(ST_Area(geom)) AS surface_total
FROM surface_unitaire_01.pro_2018_simple_01
GROUP BY origine, code_onf
UNION
SELECT 'croisement' AS origine, code_onf, SUM(ST_Area(geom)) AS surface_total
FROM surface_unitaire_01.propsg_01
GROUP BY origine, code_onf
ORDER BY code_onf, origine;
SELECT 'couche psg' AS origine, code AS code_psg, SUM(ST_Area(geom)) AS surface_total
FROM surface_unitaire_01.psg_2018_simple_01
GROUP BY origine, code_psg
UNION
SELECT 'croisement' AS origine, code_psg, SUM(ST_Area(geom)) AS surface_total
FROM surface_unitaire_01.propsg_01
GROUP BY origine, code_psg
ORDER BY code_psg, origine;
SELECT DISTINCT st_geometrytype(geom)
FROM surface_unitaire_01.bd_foret_01_simple
SELECT id_foret, ST_NPoints(geom), ST_MemSize(geom)
FROM surface_unitaire_01.bd_foret_01_simple
ORDER BY ST_NPoints DESC;
SELECT COUNT(*), COUNT(*) FILTER (WHERE ST_MemSize(geom) > 8192)
FROM surface_unitaire_01.bd_foret_01_simple;
CREATE TABLE surface_unitaire_01.bd_foret_01_simple_sub AS
SELECT id_foret, tfv, ST_SubDivide(geom) AS geom
FROM surface_unitaire_01.bd_foret_01_simple;
CREATE INDEX idx_foret_geom_sub_01 ON surface_unitaire_01.bd_foret_01_simple_sub USING GIST (geom);
CREATE TABLE surface_unitaire_01.propsg_01_sub
AS SELECT ST_SUBDIVIDE(geom) as geom, code_onf,code_psg
FROM surface_unitaire_01.propsg_01
-- TABLE DU CROISEMENT BD_FORET / PRO_PSG
DROP TABLE IF EXISTS surface_unitaire_01.final_cedric_01;
-- 1. Intersection
CREATE TABLE surface_unitaire_01.final_cedric_01 AS
SELECT p.code_onf, p.code_psg, b.tfv, ST_SetSRID((ST_Dump(ST_Intersection(ST_Buffer(p.geom, 0.0000001), b.geom))).geom, 932006) AS geom
FROM surface_unitaire_01.propsg_01 p
INNER JOIN surface_unitaire_01.bd_foret_01_simple_sub b ON (p.geom && b.geom AND ST_Intersects(p.geom, b.geom));
-- Nettoyage des géométries invalides
SELECT DISTINCT ST_GeometryType(geom) FROM surface_unitaire_01.final_cedric_01;
DELETE FROM surface_unitaire_01.final_cedric_01 WHERE ST_GeometryType(geom) != 'ST_Polygon';
CREATE INDEX sp_idx_final_cedric_01_geom ON surface_unitaire_01.final_cedric_01 USING GIST (geom);
ANALYZE surface_unitaire_01.final_cedric_01;
-- 2. Différences BD_FORET - PRO_PSG et PRO_PSG - BD_FORET
DROP TABLE IF EXISTS pro_psg;
CREATE TEMP TABLE pro_psg AS
SELECT code_onf, code_psg,geom
FROM surface_unitaire_01.final_cedric_01;
CREATE INDEX sp_idx_pro_psg_geom ON pro_psg USING GIST (geom);
ANALYZE pro_psg;
DROP TABLE IF EXISTS tfv;
CREATE TEMP TABLE tfv AS
SELECT tfv, geom
FROM surface_unitaire_01.final_cedric_01;
CREATE INDEX sp_idx_tfv_geom ON tfv USING GIST (geom);
ANALYZE tfv;
DROP INDEX surface_unitaire_01.sp_idx_final_cedric_01_geom;
INSERT INTO surface_unitaire_01.final_cedric_01
SELECT p.code_onf, p.code_psg, NULL::VARCHAR(10) AS tfv, (ST_Dump(ST_Difference(p.geom, ST_SetSRID(COALESCE(t1.geom, 'GEOMETRYCOLLECTION EMPTY'::GEOMETRY), 932006)))).geom AS geom
FROM surface_unitaire_01.propsg_01_sub p
LEFT JOIN pro_psg as t1 ON p.code_onf = t1.code_onf AND p.code_psg = t1.code_psg
UNION
SELECT NULL::VARCHAR(3) AS code_onf, NULL::VARCHAR(3) AS code_psg, t.tfv, (ST_Dump(ST_Difference(t.geom, ST_SetSRID(COALESCE(t2.geom, 'GEOMETRYCOLLECTION EMPTY'::GEOMETRY), 932006)))).geom AS geom
FROM surface_unitaire_01.bd_foret_01_simple_sub t
LEFT JOIN tfv t2 ON t.tfv = t2.tfv;
CREATE INDEX sp_idx_final_cedric_01_geom ON surface_unitaire_01.final_cedric_01 USING GIST (geom);
ANALYZE surface_unitaire_01.propsg_01;
DROP TABLE pro_psg_union;
DROP TABLE IF EXISTS tfv_union;
DROP TABLE tfv;
-----------------
J'ai donc essayé de subdiviser ce qui accélère les temps de traitements mais le plus gros problème reste le dernier ST_DIFFERENCE entre la bd_foret et pro_psg qui est toujours aussi long malgré cette subdivision et ne permet pas de valider le code. J'ai également essayé de transformer les géométries en tuile (MapVector Tile) avec ST_ASMVTGeom mais cela est encore plus long. J'ai également essayé de faire sans le ST_UNION ou ST_COLLECT mais cela ne change pas beaucoup le temps de traitement.
Ma couche principale est de l'ordre de plus de 25000 entités et les autres couches à croiser sont autour de 2000.
Pour la configuration, je suis sous PostgreSQL 12 et PostGIS 3.0.
Auriez-vous donc une idée afin d'optimiser le traitement ?
Merci,
----------------------------------------
Le message est situé https://georezo.net/forum/viewtopic.php?pid=335211#p335211
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 : benoit111
----------------------------------------
Bonjour,
sgbd : postgressql 9.2
Je mets à jour une table 'ESSAI' via portal et avec l'outil Editeur d'attributs (https://enterprise.arcgis.com/fr/portal/latest/use/widget-batch-attribute-e…)
J'ai créer un trigger sur cette table
-----------------
Code :
CREATE TRIGGER essai_update
AFTER INSERT OR UPDATE OR DELETE
ON ESSAI
FOR EACH ROW
EXECUTE PROCEDURE fonction_update();
-----------------
qui appelle une fonction pour remplir une table report à chaque update.
Si je réalise un update sur ESSAI à partir de pg_admin, le mécanisme fonctionne.
Par contre sur portal avec le widget Editeur d'attributs impossible de remplir la table essai.
Je ne trouve pas d'info la dessus alors si quelqu'un à eut le même problème et peut me donner quelques pistes ?
merci par avance
----------------------------------------
Le message est situé https://georezo.net/forum/viewtopic.php?pid=335063#p335063
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 : Killian Jaumain
----------------------------------------
Bonjour,
J'ai PostgreSQL12.3 avec PostGIS 3.0.2 sur Windows.
J'essaie d'importer des raster et des géo package sur PostgreSQL mais quand j’écris le code :
-----------------
Code :
C:\Program Files\PostgreSQL\12\bin>raster2pgsql -s 2154 -C -M C:\Users\jaumaik24d\Desktop\scan_ign\scan.gpkg | psql -d Generale -U postgres -h localhost -p 5432
-----------------
J'obtiens :
-----------------
Code :
Processing 1/1: C:\Users\jaumaik24d\Desktop\scan_ign\scan.gpkg
Mot de passe pour l'utilisateur postgres :
-----------------
Et il est impossible d'écrire le mot de passe même par copier coller.
Pouvez vous m'aider à trouver ou se situe le problème ?
Cordialement
jau19
----------------------------------------
Le message est situé https://georezo.net/forum/viewtopic.php?pid=334995#p334995
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,
J'ai un fichier constitué d'une colonne date en character varying constitué de la maniere suivante DD/MM/YYYY. J'essaye d'extraire la date avec un right(date,4) ou un substr(date,7,10) mais je me retrouve chaque fois avec une valeur nulle.
J'ai également essayer de transformer le champs en date sans succés avec la fonction to_date(date,'DD/MM/YYYY')
Y a il une manipulation a faire particulière avant ?
----------------------------------------
Le message est situé https://georezo.net/forum/viewtopic.php?pid=334842#p334842
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 : jau19 (killian.jaumain(a)gmail.com)
----------------------------------------
Bonjour,
Débutant avec PostgreSQL 12.3.
J'ai actuellement crée une base de données sur l'hôte localhost.
J'aimerai la transférée sur un serveur local donc en dehors de l'ordinateur pour la partager avec d'autres ordinateur dont je n'ai pas l'adresse IP, de ce fait j'aimerai savoir comment je dois procéder.
Vous remerciant par avance.
jau19
----------------------------------------
Le message est situé https://georezo.net/forum/viewtopic.php?pid=334748#p334748
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 : pmakowski (philippe.makowski(a)rtech.fr)
----------------------------------------
Bonjour,
J'ai un problème avec la fonction st_makeline au passage du meridien.
Nous avons des trajectoires qui font le tour de la terre et st_makeline m'affiche une ligne horizontale qui ne devrait pas exister.
La requête :
-----------------
Code :
WITH ptm AS (
SELECT b.idprocess,
ST_ShiftLongitude(ST_SetSRID(st_makepoint(
b.longitude,
b.latitude
),4326)) AS pt,
b.date_utc t
FROM alberix_data.process_tm_data b
JOIN alberix_data.process p on p.idprocess = b.idprocess
JOIN alberix_data.flight f on f.idflight = p.idflight
WHERE f.idflight=288
)
SELECT ptm.idprocess,
st_makeline(ptm.pt ORDER BY ptm.t) AS st_makeline
FROM ptm
GROUP BY ptm.idprocess
-----------------
Voici l'image dans pgAdmin :
https://drop.infini.fr/r/8JUNB0nLPc#Bn4F/aasAfxdqFzdbdLIJ/Jarv8buJJI6g9UYJh…
Comment supprimer cette méchante ligne horizontale ?
Merci
----------------------------------------
Le message est situé https://georezo.net/forum/viewtopic.php?pid=334709#p334709
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 : zang
----------------------------------------
Bonjour,
Question peut-être très bête et basique désolé...
J'ai une table de lignes et une table de polygones.
Je souhaite calculer la somme des longueurs de lignes pour chaque polygone.
Pour cela j'utilise la requête suivante:
-----------------
Code :
SELECT s.nom, sum(st_length(st_intersection(l.geom, s.geom))/1000) as long_km
FROM ligne l, polygone s
WHERE st_intersects(l.geom, s.geom)
GROUP BY nom
-----------------
A priori ça marche.
Par contre je n'arrive pas à visualiser les résultats sur QGis.
Comment générer la géométrie résultant d'un intersect entre ces deux tables?
Et pas seulement une sélection des entités, mais en découpant les lignes par rapport aux polygones?
Si j'utilise le st_intersection pour générer la geométrie, la requête est extrêmement longue et impossible de charger dans QGIS au final...
-----------------
Code :
SELECT s.nom, st_intersection(l.geom, s.geom) as geom
FROM ligne l, polygone s
WHERE st_intersects(l.geom, s.geom)
-----------------
Merci d'avance pour vos lumières,
Bonne journée!
----------------------------------------
Le message est situé https://georezo.net/forum/viewtopic.php?pid=334678#p334678
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 : Ted
----------------------------------------
Bonjour,
Je souhaiterais savoir si d'après vous il est possible de créer une boîte englobante sur un champ texte variable avec l'aide de PostGIS.
Par exemple, dans un champ libre il peut y avoir :
-----------------
Citation :
Rue de la poupée qui tousse
RUE DE LA POUPEE
Rue des Poupées
-----------------
Donc la longueur de caractères varie ainsi que typo.
Si on faisait une table avec tous les caractéristiques pour chaque lettre... Est-ce possible à votre connaissance? Ou faudrait-il privilégier d'autres outils.
En pièce jointe, je vous mets une capture d'écran de mon souhait.
D'avance merci pour vos réponses
ted
----------------------------------------
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=334387#p334387
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