Page 1 sur 1

Utilisées les coordonnées SHP sur une carte

Publié : dim. févr. 11, 2018 10:27 pm
par Zebu1er
Bonjour,
J'ai besoin de produire dans mon logiciel sous Windows (développé en Lazarus / Free pascal) une carte avec les aires (polygones) des communes sélectionnées (via code INSEE). Ce sont les utilisateurs qui administrent en temps réel les listes de communes.
Pour l'heure je me suis contenté d'exploiter le fichier OSM des tracés des communes, désormais disponible sur un site gouvernemental au format SHP. J'ai donc à présent la liste (polygones) des coordonnées des points pour chaque code INSEE de commune. Ces coordonnées se placent mal sur Google Maps, visiblement il y a un gros problème de projection. Dans le fichier PRJ il est indiqué : GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137,298.257223563]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]]
Ma question est comment obtenir au format image (PNG, JPG) une carte (Google Maps ou OSM) avec tracé dessus, des dizaines de polygones (semi-transparents). Je peux faire des requêtes HTTP(S) ou REST. Au minium il me faudrait la formule pour convertir les coordonnées du fichier SHP vers le système de coordonnées de Google Maps. Ensuite je peux récupérer moi-même le fond de carte et tracer dessus... encore qu'il me faudra convertir vers le système de coordonnées du fond de carte...

Si vous pouvez me donner des éléments ... merci d'avance !

Re: Utilisées les coordonnées SHP sur une carte

Publié : lun. févr. 12, 2018 4:20 pm
par Sefoun
Salut,

Google maps utilise la projection EPSG: 3857 et le fichier shp que tu as téléchargé doit par défaut utiliser la projection EPSG: 4326

Il existe des outils en ligne pour reprojeter ses fichiers, en voici 2 que je n'ai pas testé : https://mygeodata.cloud/cs2cs/ et https://epsg.io/transform#s_srs=4326&t_srs=3857

Re: Utilisées les coordonnées SHP sur une carte

Publié : mar. févr. 13, 2018 8:40 am
par jcr83
Bonjour,
Tu trouveras les formules de conversion et des tas d'exemples en faisant une recherche sur "Google Mercator".
Exemple de code javascript:

Code : Tout sélectionner

var degrees2meters = function(lon,lat) {
        var x = lon * 20037508.34 / 180;
        var y = Math.log(Math.tan((90 + lat) * Math.PI / 360)) / (Math.PI / 180);
        y = y * 20037508.34 / 180;
        return [x, y]
}

Re: Utilisées les coordonnées SHP sur une carte

Publié : mer. févr. 14, 2018 2:28 pm
par Zebu1er
Merci à vous deux.
Cependant vous m'indiquez comment convertir vers une projection sur une surface plate, les unités sont donc des distances. Je ne sais pas comment l'on fait pour saisir de telles valeurs dans GMaps ou OSM.
En revanche autant dans GMaps qu'OSM on peut saisir des coordonnées angulaires, ça semble plus commun. On nous parle de coordonnées GPS..
Si je prends l'exemple de Pierrelatte (26), le fichier laposte_hexasmal de la poste donne pour centre :
44.3718503232, 4.71003849979
ce qui sur GMaps et OSM ne correspond pas au centre ville.
En revanche pour cette même vile OSM donne pour cente (https://nominatim.openstreetmap.org/det ... =179153313) :
44.3778474, 4.6976609
Donc visiblement il y a une conversion de coordonnées angulaires vers coordonnées angulaires, mais avec un changement de paramètres (rayons ? origine du zéro ? autre bais ?).
Est-ce bien cela ?
En revanche j'ai testé une coordonnée du BANO dans le 69, c'est tombé pile... c'est dur à suivre ! :cry:

Re: Utilisées les coordonnées SHP sur une carte

Publié : mer. févr. 14, 2018 3:45 pm
par Zebu1er
Toutes mes excuses !
Si effectivement pour le fichier de la poste les coordonnées sont un peu décalées, en revanche pour les contours de commune c'est bon J'avais en fait un décalage dans la lecture du fichier SHP. Une fois converti en KML ça donne bien un tracé pile au bon endroit.
En revanche la conversion EPSG: 3857 / distances devrait effectivement désormais m'aider à faire mes propres superpositions sur cartes, la formule devrait être aux petits oignons.
Merci.

Re: Utilisées les coordonnées SHP sur une carte

Publié : mer. févr. 14, 2018 4:47 pm
par Sefoun
Pour terminer sur les points qui ne tombent pas sur le centre ville, il n'y a pas de coordonnées "officielles" dans le fichier laposte_hexasmal les points ont été déposés arbitrairement, sur OSM aussi. Enfin sur OSM la logique souvent c'est la lisibilité sur la carte, dans le cas de Pierrelatte le contributeur à probablement jugé qu'à une certaine échelle, le nom de la commune dérangerait moins s'il était placé sur le théâtre, peut être que chez laposte ils ont estimés que ça serait mieux sur l'école, d'autres auraient pu choisir la mairie.

Dans certains cas, sur osm ou ailleurs, le nom de la commune n'est pas du tout posé sur le centre-ville, parfois il est simplement calculé en tant que centroïde du polygone formé par les limites administratives de la commune et donc le point peut se retrouver en plein champ.

Re: Utilisées les coordonnées SHP sur une carte

Publié : lun. févr. 19, 2018 3:34 pm
par Zebu1er
Oui il est vrai que la notion de centre est un peu subjective. J'ai aussi trouvé un fichier eucircos_regions_departements_circonscriptions_communes_gps mais il semble que les coordonnées GPS sont trop arrondies et manquent donc un peu de précision. La précision doit être en centaines de mètres, ce qui sur une carte un peu serrée provoque des alignements :
21-beaune.png
21-beaune.png (227.11 Kio) Consulté 128 fois
Du coup comme je veux superposer les codes INSEE sur la carte je vais simplement calculer les centres à partir des limites de communes. Et pour déterminer les communes à afficher, rechercher les positions GPS dans eucircos_regions_departements sur un peu plus large que la carte. Ca devrait être suffisant comme ça !

Re: Utilisées les coordonnées SHP sur une carte

Publié : mar. févr. 20, 2018 8:47 am
par cquest
Pour des limites de communes aux géométries non simplifiées, il y a l'export annuel que je fais d'OSM:

http://www.data.gouv.fr/fr/datasets/dec ... streetmap/

Le calcul des centroid peut être fait une seule fois, en dehors de ton logiciel.