Utilisées les coordonnées SHP sur une carte
Utilisées les coordonnées SHP sur une carte
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 !
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
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
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
Bonjour,
Tu trouveras les formules de conversion et des tas d'exemples en faisant une recherche sur "Google Mercator".
Exemple de code javascript:
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
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 !
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 !

Re: Utilisées les coordonnées SHP sur une carte
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.
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
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.
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
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 :
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 !- cquest
- Messages : 1937
- Inscription : ven. avr. 16, 2010 12:22 am
- Localisation : Val de Marne
- Contact :
Re: Utilisées les coordonnées SHP sur une carte
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.
http://www.data.gouv.fr/fr/datasets/dec ... streetmap/
Le calcul des centroid peut être fait une seule fois, en dehors de ton logiciel.
Re: Utilisées les coordonnées SHP sur une carte
Oui je suis tout à fait d'accord, c'est finalement la solution la plus simple.
Qui est en ligne ?
Utilisateurs parcourant ce forum : Aucun utilisateur inscrit et 14 invités