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 !.
Nom d'utilisateur    Mot de passe              Toujours pas inscrit ?   Mot de passe oublié ?

#1 lun. 29 mai 2017 20:21

klb_izimmo
Membre
Date d'inscription: 29 mai 2017
Messages: 3

buffering / agrandissement de polygons

Bonjour,

Je tiens à m'excuser par avance si je ne poste pas sur le bon topic. Je suis simplement de passage avec une problématique de géométrie à soumettre à des experts en la matière.

Je me présente, je suis développeur de logiciel travaillant actuellement sur un programme de cartographie (très très très simplifié) adapté au marché de l'immobilier.
Pour rester simple, je me base sur une carte Google map sur laquelle je viens afficher des polygones représentants des quartiers. Je dois afficher autour de ces quartiers une zone de 300m.

Mes recherches m'ont conduit à explorer plusieurs pistes. La plus sérieuse étant l'utilisation d'un algorithme de buffer sur mes polygones.
J'ai essayer un traitement en temps réel (grâce à la librairie GEOS), puis en amont en traitant mes données grâce à QGIS.

Mais je me retrouve toujours face au même problème :

L'inflation / augentation / buffering de polygones semble erroné à petite échelle. elle est bonne en largeurs mais trop importante en hauteur.

Je travail avec le format WSG84. Sur des polygones simple.

Les 2 algorithme que j'ai utilisé font intervenir la distance à appliquer en degrés décimal. Je l'ai donc calculer en faisant intervenir la latitude de chacun  de mes polygones. :

300 / (111.3199 * 1000 * Cos( LATITUDE * (pi / 180)))

voilà par exemple un de mes polygones : ( lat,lng lat,lng exprimés en degrés décimaux )

48.38580074,-4.53411741 48.38580893,-4.53397723 48.38567380,-4.53326097 48.38565173,-4.53305621 48.38569406,-4.53297546 48.38568707,-4.53289072 48.38552136,-4.53153651 48.38550453,-4.53121877 48.38539584,-4.53011636 48.38502983,-4.53004478 48.38474692,-4.52997430 48.38477737,-4.52959688 48.38440934,-4.52959419 48.38436191,-4.52960969 48.38416231,-4.52980541 48.38409062,-4.52998846 48.38402088,-4.53033321 48.38372806,-4.53021218 48.38365155,-4.53057004 48.38363635,-4.53060993 48.38348133,-4.53092957 48.38344980,-4.53098473 48.38328912,-4.53120859 48.38325952,-4.53134681 48.38325497,-4.53232576 48.38326618,-4.53369965 48.38427784,-4.53374317 48.38428832,-4.53354586 48.38450237,-4.53356316 48.38449328,-4.53375444 48.38456613,-4.53376403 48.38457661,-4.53356672 48.38485634,-4.53359266 48.38479587,-4.53461076 48.38501666,-4.53463670 48.38504154,-4.53484799 48.38551156,-4.53476703 48.38560759,-4.53462754 48.38573607,-4.53435727 48.38580074,-4.53411741

voilà le polygone "augmenté" :

48.3830584633514,-4.53667113246516 48.3830948736163,-4.53672384711701 48.3837953535547,-4.53724702507195 48.3846261733266,-4.53751928565182 48.3855004366965,-4.5375121528619 48.3859704566965,-4.5374311928619 48.3866540847803,-4.53721712939784 48.3872574881833,-4.53683102726537 48.3877382977194,-4.53629999740407 48.3878343277194,-4.53616050740407 48.3880491504391,-4.53578820039599 48.3881776304391,-4.53551793039599 48.3883462594457,-4.53506101781729 48.3884109294457,-4.53482115781729 48.3884995338024,-4.53427508671029 48.3885077238024,-4.53413490671029 48.388465462636,-4.53347604711235 48.3883741903646,-4.53299225611803 48.3883883054392,-4.53275321813538 48.3883813154392,-4.53266847813538 48.3883704507498,-4.53256236396655 48.3882160476962,-4.53130055623495 48.3882041416486,-4.53107577741472 48.388194881712,-4.5309535199319 48.388086191712,-4.5298511099319 48.3878663457502,-4.52901865727555 48.3873959083656,-4.528297548172 48.3867225975503,-4.52776092705986 48.386707109179,-4.52775521968865 48.3864453251195,-4.52746937544013 48.3856689903041,-4.52704475085628 48.3847971290984,-4.52689355621051 48.3844290990984,-4.52689086621051 48.3835695816213,-4.52702452936129 48.3835221516213,-4.52704002936129 48.3824691734527,-4.52767943139157 48.3822695734527,-4.52787515139157 48.3821541971249,-4.52804963233377 48.3818342649828,-4.52828295985555 48.381359044419,-4.52890983015848 48.3810844093678,-4.52964697095214 48.3810825809459,-4.52965552302447 48.3806456601184,-4.53064248949003 48.3806160601184,-4.53078070949003 48.3805561531994,-4.53133424519185 48.3805516031994,-4.53231319519185 48.380551663984,-4.53234781712279 48.380562873984,-4.53372170712279 48.3806933729685,-4.53452971861864 48.3810597057277,-4.53526164270758 48.3816282927368,-4.53585038830248 48.3823470150381,-4.53624198862923 48.3827412605227,-4.53631983813039 48.3830087859911,-4.53663922756885 48.3830584633514,-4.53667113246516

Si vous les analysez vous constaterez qu'il y a bien 300 m sur la largeur mais plus sur la hauteur :
http://hpics.li/59f8bbe

La différence n'est pas monstrueuse mais est assez importante pour être notable et empêcher l'exploitation de cette fonctionnalité.

Mes recherche m'ont conduit à travers les méandres d'internet à essayer de déchiffrer des pages et des pages de formules qui me dépassent totalement ! Désespéré je m'en remet à votre savoir.

En vous remerciant du fond du cœur pour toute aide que vous pourriez apporter.

Merci et bonne journée

Hors ligne

 

#2 mar. 30 mai 2017 15:46

Pierre Dolez
Membre
Date d'inscription: 14 août 2008
Messages: 473

Re: buffering / agrandissement de polygons

Bonjour,
Je n'ai pas regardé en détail, mais apparemment il s'agit tout simplement du fait que 'on' travaille toujours dans un système de projection. Cela veut dire que les éléments que vous donnez, polygones, distances sont dans en système cartésien X Y, en France, c'est la projection Lambert, et que les valeurs longitudes/latitudes telles qu'on les trouve sur google sont en coordonnées sphériques. Vous n'êtes pas le premier à être surpris pas cette situation.
Cordialement.

Hors ligne

 

#3 mar. 30 mai 2017 16:16

Dof
Membre
Lieu: Grenoble
Date d'inscription: 28 oct. 2009
Messages: 309
Site web

Re: buffering / agrandissement de polygons

Bonjour,
Etant un grand fan des outils de Mapbox je vous conseillerais d'utiliser Turfjs.
Pour ce genre de problème c'est le top!

C'est très simple, vous transformez le polygon en géométrie Geojson. Pour cela vous avez même un "helper" pour macher le travail:
http://turfjs.org/docs/#polygon

Puis vous utilisez la fonction buffer: http://turfjs.org/docs/#buffer

Vous récupérez un Geojson que vous pouvez retransformer comme vous le souhaitez avec une petite fonction.

Et hop, un 3 minutes c'est plié et vous serez au mètre près.

Hors ligne

 

#4 mer. 31 mai 2017 12:07

klb_izimmo
Membre
Date d'inscription: 29 mai 2017
Messages: 3

Re: buffering / agrandissement de polygons

Bonjour,

Tous d'abbord merci beaucoup pour vos réponses.

@Pierre Dolez :
en effet il semblerais que le mélange de type systèmes de projections provoques des petits micmacs au niveau des mesures de distance sur QGIS. J'ai fait plusieurs tests avec l'outil de mesure et le simple fait de changer l'unité de mettre a degré puis l'invers chanboule tous les résultats.

> première mesure : 300m, conversion en degrés = 0.0027. Retour en mètres => 375m

Certain un bug provoqué par la manipulations de donnée sphériques dans un repère orthonormé.

@ Dof :
cela fait plusieurs mois que je cherche des framework ou des librairies efficaces pour me permettre des calculs de ce genre (buffer / translations / calcul de centroid, etc...). Mes recherches était focalisé sur du code PHP et je n'avais pas pensé à chercher coté JS.
Merci beaucoup pour l'information cela me sera extrêmement utile pour la suite !

Encore merci à vous et à très bientôt sur ce forum qui m'a donné plus de réponses en 2 jours qu'en 6 mois de recherches dans les méandres de linternet !

Hors ligne

 

#5 lun. 12 juin 2017 17:19

klb_izimmo
Membre
Date d'inscription: 29 mai 2017
Messages: 3

Re: buffering / agrandissement de polygons

Re bonjour tous le monde,

Je reviens vers vous toujours avec le même problème ! (Damn !)

J'ai donc essayé :
- la librairie GEOS
- pré-process mon buffer sur QGIS
- TURF.js

Toujours le même problème quelque soit la façon de faire. Je me retrouve avec un polygone agrandit correctement en hauteur mais pas suffisamment en largeur.

Je commence a me demander si cela n'est pas lié à la petite échelle à laquelle j'essaie d'appliquer mon buffer : 300 mètres.

De petites échelles comme celles là peuvent elles à votre connaissance provoquer ce genre de problème ?

visuellement ça donne ça :

https://img4.hostingpics.net/thumbs/mini_559871Sanstitre1.png

Dernière modification par klb_izimmo (lun. 12 juin 2017 17:20)

Hors ligne

 

Pied de page des forums

Powered by FluxBB

Partagez  |