Suite

Convertir WKT en GeoJSON avec Leaflet

Convertir WKT en GeoJSON avec Leaflet


J'ai une colonne de géométrie WKT de type point dans une table MySQL stockant l'emplacement de certains magasins.

Je veux l'afficher sur une carte Leaflet sur mon site Web. J'ai trouvé de nombreux tutoriels pour le faire sur le site officiel du dépliant à partir de données GeoJSON.

Mais je n'ai trouvé aucune documentation précise qui explique clairement comment convertir WKT en GeoJSON… même si cela semble être une partie très importante du processus.

Est-ce que quelqu'un connaît une bonne source qui comble cette lacune ou peut m'expliquer comment faire cela en PHP ou JavaScript ?


Si vous avez déjà WKT, vous pouvez envisager d'utiliser la bibliothèque JavaScript, Wicket, pour passer directement de votre WKT aux fonctionnalités de Leaflet. Comme le montre cet exemple, vous pouvez transmettre une chaîne WKT et un objet style/options, et Wicket renverra un objet caractéristique que vous pouvez attacher directement à un Leaflet FeatureGroup, etc.

Cet exemple suppose deux choses : 1) Vous avez un calque existant ou featureGroup déjà et instancié et ajouté à votre carte, et 2) vous avez un style d'icône existant pour vos marqueurs. Dans ce cas, je viens de supposer queicône vertestyle de marqueur de la documentation officielle de la brochure.

var wkt_geom = "POINT(34.0218531, -81.0707438)" ; var wicket = new Wkt.Wkt(); wicket.read(wkt_geom); // "greenIcon de la documentation officielle notée ci-dessus. var feature = wicket.toObject({icon: greenIcon}); // Vraisemblablement featureGroup est déjà instancié et ajouté à votre carte. featureGroup.addLayer(feature);

En plus de Wicket, il y a aussi Wellknown

// Avec Leaflet ou MapBox.js var geojsonLayer = L.geoJson(parse('Point(1 2)'));

A partir de la notice 1.5, le guichet.toObject()la méthode ne fonctionne pas pour moi. Il a créé une fonctionnalité et a été mappé, mais je n'ai pu en obtenir aucuneonEachFeaturetapez action pour travailler avec. Mais le.toJson()la fonction se convertit en composant géométrique d'une fonction geojson standard, et j'ai fait avancer cela.

var wkt_geom = "POINT(34.0218531, -81.0707438)" ; var wkt = new Wkt.Wkt(); wkt.read(wkt_geom); var feature = { "type": "Feature", 'properties': {}, "geometry": wkt.toJson() };

Maintenant, "feature" est un json simple avec une syntaxe geojson appropriée (et pas de fonctions, d'objets, etc.; juste des données!),L.geoJson (fonctionnalité). Si vous souhaitez que les métadonnées aillent avec votre forme, vous pouvez les affecter en :

feature.properties = {… };

et après cela faire leL.geoJson (fonctionnalité)déclaration.

J'ai eu une expérience similaire avec turfJS : récupérer les données dans la structure json native, puis continuer, plutôt que d'essayer de pousser l'objet d'une bibliothèque dans un autre. Quelques années plus tard, ils divergent généralement.