polymaps et poly… polygones

9

J'ai joué avec Bing Maps + Polymaps récemment.

Il est devenu évident que Bing est la seule ressource cartographique disponible pour Polymaps qui inclut l'imagerie satellite . Est-ce vrai?

J'essaie d'accomplir le dessin de nombreux polygones de différentes tailles sur une carte et de les remplir de différentes couleurs en fonction de ce qu'ils représentent. De plus, je veux que chacun de ces polygones soit cliquable.

Je comprends que pour charger des données géographiques sur une carte avec Polymaps, vous utilisez soit .features () ou .url () dans le cadre de l'objet geoJSON.

J'ai .features () fonctionne, mais en utilisant cette fonction, les données de polygone doivent être intégrées dans le fichier javascript lui-même - comme dans:

map.add(po.geoJson()
        .features([
    {
      "geometry": {
        "coordinates": [[
[[-63.599925935268395,44.64018531837119],[-63.599789142608664,44.640219671024646],[-63.59973818063736,44.6401452402498],[-63.599877655506134,44.64010707058464],[-63.599925935268395,44.64018150140844]],

[[-63.59986692667008,44.639874235083376],[-63.59975695610047,44.63991431339196],[-63.599697947502136,44.63981507181532],[-63.5998159646988,44.639782627416906],[-63.59986424446105,44.6398723265918]]
        ]],
        "type": "MultiPolygon"
      },
      "type": "Feature",
      "id": "beat:05X",
      "properties": {"name": "05X"}
    }

        ]));

Je veux que ces données proviennent réellement d'une base de données et ne se trouvent pas statiquement dans le javascript lui-même - ce qui me dit que je devrais utiliser la méthode .url () à la place - correct? Et si j'utilise la méthode .url (), je dois passer un modèle d'URL valide qui renvoie geoJSON ... Comment dois-je procéder avec mes propres données privées? Je connais PHP et mySQL - dois-je utiliser un système de base de données spatiale à la place?

Et comment un serveur de carte comme MapServer, GeoServer et d'autres s'inscrit-il dans tout cela? Ne pourrais-je pas configurer un script PHP pour lire ces modèles à partir de la variable $ _GET, interroger une base de données et renvoyer la chaîne geoJSON appropriée?

J'ai vraiment juste besoin d'inspiration, de quelques conseils pour me mettre sur la bonne voie et éliminer certains de mes doutes. Je me suis retrouvé à creuser autour de l'échange de pile et à tout googler, des serveurs de cartes aux bases de données géospatiales - vous l'appelez, j'ai probablement lu à ce sujet, mais j'ai du mal à assembler les pièces.

Question longue mais une fois ces choses clarifiées, je devrais être dans une bien meilleure position.


Nous pouvons supprimer les polymaps de l'équation s'il y a des substituts.

En résumé, je cherche à prendre un grand nombre de polygones dans une base de données (PostGIS?) De toutes formes, tailles, couleurs et transparences différentes, et à les tracer sur une carte. C'est essentiellement ça! Polymaps a des graphiques vectoriels + Je pensais que cela serait trivial étant donné le code ci-dessus ... nous pouvons le supprimer si vous avez d'autres idées. Quelle est la meilleure solution? Ma seule exigence commerciale est que l'imagerie satellite soit activée ... ce qui signifie que nous travaillons avec Bing ou Google.

Jordan Arseno
la source

Réponses:

8

Si vous parlez de GeoJSON, vous pouvez utiliser n'importe quel type de base de données et de serveur d'arrière-plan, à condition:

1) s'attend à recevoir des URL de style TMS ou /{zoom}/{x-coord}/{y-coord}.json et peut convertir Z / X / Y dans une boîte englobante.

(Jetez un oeil à quelque chose comme Tilestache (.org) si vous voulez / devez voir les mathématiques impliquées dans cela.)

2) Renvoie GeoJSON.

Pour le style et l'ajout de bits interactifs, aux résultats de données, vous souhaiterez définir une fonction de «chargement» à l'aide de la méthode on () du calque. Par exemple:

var l = org.polymaps.geoJson ();
l.url ("http://example.com/tiles/{Z}/{X}/{Y}.json");
l.on ("charger", fonction (e) {...});

Le site Polymaps a beaucoup de bonne documentation et un exemple de code, mais j'ai également inclus les diapositives et l'exemple de code d'un atelier Polymaps que j'ai fait récemment:

http://www.aaronland.info/talks/where2011/

http://www.aaronland.info/talks/where2011/workshop

À votre santé

user2016
la source
Merci Aaron, les liens que vous avez publiés sont vraiment indispensables. J'ai téléchargé les fichiers pour un examen ultérieur, j'y ferai référence lorsque je serai au stade de l'interactivité. Je ne suis pas sûr que Tilestache soit quelque chose dont j'ai besoin parce que le carrelage réel est pris en charge par Bing, non? Les données personnalisées que je vais servir sont des données polygonales, pas n'importe quelle sorte d'images .png, .jpg, etc. Y a-t-il une chance que je puisse prendre un pic sur ./flickr.json? Lien manquant. Bravo et merci encore.
Jordan Arseno
Je l'ai trouvé à la racine de l'atelier / 005-data /, merci!
Jordan Arseno
2

Ok, alors voici l'affaire - Ce billet de blog

Tout effacé. C'est une lecture incontournable pour quiconque joue avec Polymaps. Je l'ai trouvé via Henry sur Reddit

Aaron a mentionné l'utilisation de TileStache et en effet ... C'est la clé, je n'ai tout simplement pas vu comment - Le blog ci-dessus est assez informatif pour utiliser TileStache. Grande victoire.

Jordan Arseno
la source
Vous avez noté que vous vouliez que chaque élément soit cliquable, comment avez-vous accompli cela? J'ai ma carte en cours d'exécution, mais je suis contre un mur pour rendre les éléments cliquables sur la carte.
bonjour Erik, si vous téléchargez et extrayez le plugin polymaps sur votre serveur web, vous pouvez accéder à un exemple parfait sur: localhost / polymaps / examples / tipsy / tipsy.html - Vérifiez la source de ce type. À vrai dire, j'ai mis ce projet de cartographie en mode d'interruption temporaire et je n'ai pas encore atteint les points de données cliquables, mais c'est exactement là que je commencerais. Bonne chance!
Jordan Arseno
@JordanArsenault le lien "cet article de blog" ne fonctionne plus - avez-vous téléchargé les informations? Merci
Stephen Lead
hé Stephen, en effet, le billet de blog est maintenant fermé et je n'ai pas de copie téléchargée. Cependant, le créateur de goalfinch peut être trouvé ici: linkedin.com/in/hanskuder ... S'il vous plaît, si vous trouvez le contenu, faites-le moi savoir et je corrigerai les liens - ou n'hésitez pas à modifier ce post :)
Jordan Arseno