Nous utilisons des cookies pour vous garantir la meilleure expérience sur notre site. Si vous continuez à utiliser ce dernier, nous considèrerons que vous acceptez l'utilisation des cookies. J'ai compris ! ou En savoir plus !.
banniere

Le portail francophone de la géomatique


Toujours pas inscrit ? Mot de passe oublié ?
Nom d'utilisateur    Mot de passe              Toujours pas inscrit ?   Mot de passe oublié ?

Annonce

Printemps des cartes 2024

#1 Tue 05 August 2014 14:40

mugenito
Participant occasionnel
Date d'inscription: 29 Jul 2014
Messages: 11

Création d'isolignes à partir de polygones

Bonjour à tous smile

Je travaille sur un outil en C++, en utilisant Postgres / Postgis. Je précise que je suis totalement novice en Postgis, et en SIG de manière plus générale.

Je bloque sur une opération que me paraît pourtant réalisable :

- J'ai un polygone en entrée (c'est un élément d'une table de ma BDD), auquel j'effectue des traitements (lissage, etc) --> ça reste un polygone.

- A partir de ce polygone lissé , j'aimerai créer des iso-lignes pour ensuite pouvoir les afficher --> Je bloque sur cette étape

J'ai lu quelques infos sur la manière de procéder (utilisation de GDALcontour, rasterisation, etc), mais je suis complètement perdu dans la marche à suivre !
Si quelqu'un pouvait m'aiguiller, ou bien  m'orienter vers des pistes, je suis preneur!

Pour que ça soit plus parlant, le dessin (fait sous Paint à la va-vite) est un peu plus parlant. le passage de l'étape A à B est fonctionnel, c'est sur l'étape B à C que je bloque :

[img]http://img4.hostingpics.net/pics/987437Temp.png[/img]

Merci d'avance !

Hors ligne

 

#2 Tue 05 August 2014 15:50

Nicolas Ribot
Membre
Lieu: Toulouse
Date d'inscription: 9 Sep 2005
Messages: 1536

Re: Création d'isolignes à partir de polygones

bonjour,

Je ne comprends pas bien:
Les isolignes se tracent facilement avec des points d'altitude. Mais là, vous voulez générer de fausses isolignes ou extrapoler les altitudes du polygone pour générer des lignes à l'intérieur ?

Nicolas

Hors ligne

 

#3 Tue 05 August 2014 16:02

mugenito
Participant occasionnel
Date d'inscription: 29 Jul 2014
Messages: 11

Re: Création d'isolignes à partir de polygones

Nicolas Ribot a écrit:

bonjour,

Je ne comprends pas bien:
Les isolignes se tracent facilement avec des points d'altitude. Mais là, vous voulez générer de fausses isolignes ou extrapoler les altitudes du polygone pour générer des lignes à l'intérieur ?

Nicolas


Bonjour,

En effet, mon cas est un peu particulier. Mon polygone lissé correspond en fait à une projection d'un diagramme d'antenne au sol. Ce polygone correspond à un niveau de gain particulier.

Je désirerais ainsi générer des isolignes à l'intérieur de mon polygone lissé (ces isolignes représentant des isoniveaux de gains).

Dans mon exemple ci-dessous, le polygone rouge est mon polygone de base lissé (qui correspond à un isoniveau de gain de 10dB). je désirerais donc générer les lignes intérieures. Si le nombre de lignes à générer peut-être paramétrable, ce serait le top!

J'espère avoir été assez clair.

[img]http://img4.hostingpics.net/pics/881675TEMP2.png[/img]

Dernière modification par mugenito (Tue 05 August 2014 16:04)

Hors ligne

 

#4 Tue 05 August 2014 17:58

mugenito
Participant occasionnel
Date d'inscription: 29 Jul 2014
Messages: 11

Re: Création d'isolignes à partir de polygones

Je fais un petit retour : je pense pouvoir m'en sortir en utilisant la fonction transcale (http://postgis.org/docs/ST_TransScale.html).

Il s'agit en fait tout bêtement d'homotéthies. Je peux ainsi paramétrer le nombre de polygones à générer, ainsi que l'espacement entre chacun d'entre eux.

Je stockerai ensuite tout ça dans un raster, et je pense que ça devrait faire le job !

Hors ligne

 

#5 Tue 05 August 2014 19:16

Nicolas Ribot
Membre
Lieu: Toulouse
Date d'inscription: 9 Sep 2005
Messages: 1536

Re: Création d'isolignes à partir de polygones

Bonjour,

Oui, du coup, si l'espacement doit etre régulier, ca devrait le faire.
un buffer négatif, aussi. ca génèrerait des isolignes meme si la geom est un peu tordue:

Code:

select st_exteriorRing(st_buffer(geom, -15)) from testpg
UNION 
select st_exteriorRing(st_buffer(geom, -30)) from testpg
UNION 
select st_exteriorRing(st_buffer(geom, -45)) from testpg
UNION 
select st_exteriorRing(st_buffer(geom, -60)) from testpg
UNION 
select st_exteriorRing(st_buffer(geom, -75)) from testpg;

[img]http://img11.hostingpics.net/pics/925849ScreenShot20140805at191101.png[/img]

Nico


Fichier(s) joint(s) :
Pour accéder aux fichiers vous devez vous inscrire.

Hors ligne

 

#6 Wed 06 August 2014 15:37

mugenito
Participant occasionnel
Date d'inscription: 29 Jul 2014
Messages: 11

Re: Création d'isolignes à partir de polygones

Bonjour,

En effet, ma méthode avec TransScale fonctionne, mais ce que tu me proposes avec le buffer négatif est plus simple !
Je vais comparer les deux méthodes d'un point de vue temps d'exécution pour sélectionner la plus rapide.

Merci beaucoup smile

Hors ligne

 

#7 Wed 06 August 2014 16:34

Nicolas Ribot
Membre
Lieu: Toulouse
Date d'inscription: 9 Sep 2005
Messages: 1536

Re: Création d'isolignes à partir de polygones

Hello,

Oui mais du coup, me demandais, au niveau métier, ce qu'il te fallait vraiment:

Le buffer va changer la forme du contour si le pg est tordu (cf. courbe 60) alors qu'avec TransScale, le polygone aura tjs sa forme initiale, mais plus petite, non ?

Sur des gros pg ou de gros jeux de données, transcale sera bcp plus rapide (déplacement des coordonnées uniquement) que le buffer (recalcul d'un polygone complet).

Nico

Hors ligne

 

#8 Wed 06 August 2014 17:27

mugenito
Participant occasionnel
Date d'inscription: 29 Jul 2014
Messages: 11

Re: Création d'isolignes à partir de polygones

Hello,

Mon objectif est dans un premier temps d'effectuer une approximation de projection de diagramme d'antenne au sol.

Le truc, c'est que, selon les cas (antennes reconfigurables, techno d'antenne, orientation de l'axe, etc), l'un ou l'autre des cas sera plus fidèle à la réalité physique.

J'ai finalement implémenté les deux méthodes, et dans un premier temps, l'utilisateur choisira le résultat qui lui convient le mieux.

Je verrai par la suite si je peux essayer de trouver un petit algo qui permet de choisir la meilleure des techniques selon la configuration de l'antenne.

Hors ligne

 

Pied de page des forums

Powered by FluxBB