Message posté par : mayelle.cardron
----------------------------------------
Bonjour,
j'ai utilisé le dblink pour créer des vues matérialisés à partir d'une autre base. Cependant, ce moyen de procéder n'est pas optimal
Je l'emploi comme ci après:
-----------------
Code :
CREATE MATERIALIZED VIEW schema.vm_nom
AS SELECT t1.colonne1, t1.colonne2 , t3.geom
FROM dblink('hostaddr=127.0.0.1 port=5432 user=user dbname=dbname password=psswrd',
'select colonne1, colonne2, geom from schema.t1') t1(colonne1 varchar(24),
colonne2 varchar(127), geom geometry(geometry, 2154))
-----------------
Y aurait-il un autre moyen de faire, notamment lorsque l'on appelle les colonnes avec leur type, ceci est très long ?
J'ai aussi pensé à l'extension fdw mais je ne comprend pas tout à fait comment ça s'utilise.
Je précise que dans mon cas, je connecte 2 bases en local.
Merci d'avance.
----------------------------------------
Le message est situé https://georezo.net/forum/viewtopic.php?pid=360565#p360565
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 : guibouvier
----------------------------------------
Bonjour
j'ai beau avoir parcouru le tutoriel postgresql, je n'arrive pas à mes fins pour ma requete SQL.
J'ai une table dans laquelle j'ai 15000 dossiers d'urbanisme répartis sur une trentaine de communes.
Je cherche à compter le nombre de dossiers par commune et par type de dossier.
J'ai donc lancé cette requete (qui fonctionne):
-----------------
Code :
select count (id_dossier), dossiernumtypeentiteappcode ,communeinseecode
from dossier d
where dossierdatedepot > '2023-01-01' and dossierdatedepot < '2024-01-01'
group by communeinseecode, dossiernumtypeentiteappcode
order by communeinseecode, dossiernumtypeentiteappcode
-----------------
J'obtiens ce type de résultats
1 CU 07009
14 DP 07009
3 PC 07009
12 CU 07015
6 DP 07015
1 PA 07015
5 PC 07015
2 CU 07051
6 DP 07051
8 CU 07084
9 DP 07084
Je cherche à obtenir les mêmes informations mais en colonne (type de dossier) avec une ligne par commune
c'est à dire
Code insee Commune / PC / CU / DP
07009 / 3 / 1 / 14
Est ce réalisable ? si oui comment ? peut on mettre plusieurs COUNT dans le SELECT ?
Sur certains forums, on parle de faire plusieurs requetes avec des UNION. J'ai testé mais ça ne permet pas d'obtenir par commune, le nombre de dossiers pour chaque type de dossier.
Merci d'avance pour votre aide
Gui
----------------------------------------
Le message est situé https://georezo.net/forum/viewtopic.php?pid=360096#p360096
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 : emmamillefeuille
----------------------------------------
Bonjour,
Je me permets de réanimer ce sujet car je suis dans un cas similaire : je souhaite moi aussi obtenir la longueur d'un réseau (cours d'eau) par communes et la fonction que j'utilise est la même que celle plus haut avec
-----------------
Code :
sum(st_length(st_intersection(a.geom,b.geom)))
-----------------
et elle fonctionne très bien pour les cours d'eau qui "entrent" une fois par communes et la traversent par exemple.
Néanmoins, certains cours d'eau en bordure de communes longent la limite, entrant et sortant plusieurs fois de chaque communes (en zigzag) et là la longueur est nulle.
Auriez-vous une idée ? Je sais que la géométrie "en morceau" de la ligne sera discutable, mais j'aimerais bien obtenir la longueur par communes malgré tout.
Merci à tous
Emma
----------------------------------------
Le message est situé https://georezo.net/forum/viewtopic.php?pid=360115#p360115
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 : emmamillefeuille
----------------------------------------
Bonjour,
J'utilise DBeaver pour mon traitement de BDD et je tombe aujourd'hui sur cette erreur lorsque j'utilise l'aggrégation GROUP BY. Je crois comprendre que c'est parce que j'appelle des colonnes dans select que je ne rappelle pas dans mon group by.
Néanmoins j'utilisais jusqu'ici le gestionnaire de données de QGIS et je n'ai jamais eu ce soucis avant. Mais je travaillais sur des couches virtuelles, je suis là sur une base PostgreSQL, je ne sais pas si ça change quelque chose.
-----------------
Code :
with actions_sysma_2022 as (select o.sysma_object_type as "type_objet", a.sysma_action_type as "type_action",
count(distinct actions.sysma_action_id) as "nb_actions",
sum((case when ST_GeometryType(actions.geom) = 'ST_LineString' then ST_Length(actions.geom)/1000 when ST_GeometryType(actions.geom) = 'ST_Polygon' then ST_area (actions.geom)/10000 else null end)) as "emprise",
case when ST_GeometryType(actions.geom) = 'ST_LineString' then 'km_lineaire' when ST_GeometryType(actions.geom) = 'ST_Polygon' then 'ha_surface' else null end as "unites",
actions.program_year ,actions.status,actions.geom
from eau_brut.sysma_actions actions
left join eau_brut.sysma_object_type o on actions.obj_sysma_object_type_id = o.sysma_object_type_id
left join eau_brut.sysma_action_type a on actions.sysma_action_type_id = a.sysma_action_type_id
where group_alias = 'travaux' and actions.program_year = 2022 and actions.status = 'termine'),
actions_sage as (select sage.codenatzone,sage.nomzone,actions_sysma_2022.*,st_intersection(actions_sysma_2022.geom,sage.geom)geom
from actions_sysma_2022,eau_referentiel.sandre_sage as sage
where sage.codenatzone IN ('SAGE04015', 'SAGE04032', 'SAGE04033', 'SAGE03005', 'SAGE04008') and st_intersects (actions_sysma_2022.geom,sage.geom))
select *
from actions_sage
-----------------
A ce code, il me répond que je dois ajouter la colonne o.sysma_object_type alors que je ne fais même pas de group by dans le premier select et si j'ajoute soigneusement toutes les colonnes de la ligne 1 dans un group by sur la ligne 10,alors i y a un affichage mais les colonnes sont indiquées d'un point orange "pas de correspondance"... Bref je suis un peu perdue et je n'obtiens pas ce que je cherche.
J'aimerais bien à terme, faire mon group by sur le dernier (3") select. mais déjà faire fonctionner les deux premiers ;)
Est-ce que quelqu'un peut m'expliquer les subtilités de GROUP BY ?
Merci d'avance à tous
----------------------------------------
Le message est situé https://georezo.net/forum/viewtopic.php?pid=359944#p359944
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 : image95
----------------------------------------
Bonjour,
Je souhaite trouver un moyen de déplacer 100 tables d'un schema 'A' vers un schema 'B'. Non seulement les données. Mais également les index, les clef primaires, contraintes (en quelque sorte INCLUDING ALL). Sauf erreur de ma part, ce bout de code permettrait de déplacer les données en tant que tel. Mais comment faire pour déplacer également les index, contraintes, clef primaire...
-----------------
Code :
DO
$$
DECLARE
row record;
BEGIN
FOR row IN SELECT tablename FROM pg_tables WHERE schemaname = 'A' -- and other conditions, if needed
LOOP
EXECUTE format('ALTER TABLE A.%I SET SCHEMA ;', row.tablename);
END LOOP;
END;
$$;
-----------------
Merci.
----------------------------------------
Le message est situé https://georezo.net/forum/viewtopic.php?pid=358795#p358795
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 : StéN (stephanie.niogret(a)megeve.fr)
----------------------------------------
Bonjour,
Je tente de générer une fonction puis le trigger qui fait appel à la fonction pour redimensionner une image avant l'intégration dans table postgres (version 11 pour le moment, très prochainement en V13). Le but est de gérer tout au même endroit. Ces photos sont associées à des objets géographiques, et intégrées en base à partir d'un formulaire d'une application SIG
En cherchant sur le net, il est souvent indiqué d'utiliser l'extention python pour parvenir à mes fins.. mais je suis bloqué. Si certains ont des idées, je suis preneur...
Voici ce que j'ai tenté, sans succès pour le moment :
CREATE OR REPLACE FUNCTION resize_image(image bytea)
RETURNS bytea AS $$
from PIL import Image
import io
max_size = 900
im = Image.open(io.BytesIO(image))
width, height = im.size
if width > height:
new_width = min(max_size, width)
new_height = int(new_width * height / width)
else:
new_height = min(max_size, height)
new_width = int(new_height * width / height)
im = im.resize((new_width, new_height))
output = io.BytesIO()
im.save(output, format='JPEG')
return output.getvalue()
$$ LANGUAGE plpython3u;
CREATE TRIGGER resize_media
BEFORE INSERT ON media_cameras
FOR EACH ROW
EXECUTE FUNCTION medias.resize_media(NEW.media, 900);
Ce n'est peut-être pas la bonne méthode, si vous en avez une autre qui fonctionne, je prends.
Je vous remercie par avance de votre aide.
Sté
----------------------------------------
Le message est situé https://georezo.net/forum/viewtopic.php?pid=359912#p359912
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 Maylis,
-----------------
Citation :
pour avoir seulement les bâtiments qui sont sur le RFP ?
-----------------
J'ai personnellement du voir les bâtiments que vous souhaitez et ceux que vous ne souhaitez pas : vous pourriez peut-être faire un petit dessin pour illustrer ceux qui sortent avec ST_Intersect que vous ne voulez pas ?
Sinon, les fonctions de relations spatiales sont illustrées ici :
http://postgis.net/workshops/postgis-intro/spatial_relationships.html
----------------------------------------
Le message est situé https://georezo.net/forum/viewtopic.php?pid=359847#p359847
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
----------------------------------------
Bonsoir,
Ce qui se fait parfois pour identifier des polygones contenus dans d'autres alors que les couches sont mal calées (donc intersection entre les deux couches) est de faire l'intersection entre les objets des deux couches et de regarder le % d'intersection d'un objet vs un autre:
un batiment "un peu a cheval" va avoir 99% de sa surface en intersection avec un RFP => il est dans ce RFP.
Il faut décider d'une valeur (plus de x% de la surface en intersection) pour choisir quel polygone associer avec un polygone de l'autres couche.
Nicolas
----------------------------------------
Le message est situé https://georezo.net/forum/viewtopic.php?pid=359848#p359848
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 : emeric78
----------------------------------------
Bonjour,
Malgré de nombreuses recherches sur le net je n'arrive pas à trouver les fonctions me permettant de sélectionner les points à une distance donnée d'une ligne et d'ordonner les points trouvés selon le sens de la ligne. exemple : Ordonner des POI le long d'un itinéraire à une distance de 200m.
Bonne journée,
----------------------------------------
Le message est situé https://georezo.net/forum/viewtopic.php?pid=359867#p359867
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 : sigtdlu (acouillerot(a)tdlu.fr)
----------------------------------------
Bonjour,
J'ai une table SERVITUDE avec un champ SUPTYPE qui renseigne le type de servitude et souhaiterais, par une fonction trigger, créer autant de tables que ce qu'il y a de SUPTYPE.
Je présume devoir utiliser une boucle dans la fonction mais mes connaissances s'arrêtent là.
Quelqu'un pourrait-il m'aiguiller s'il vous plait ?
D'avance, merci, Bien cordialement, Alice
----------------------------------------
Le message est situé https://georezo.net/forum/viewtopic.php?pid=359455#p359455
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