2008-11-12 16 views
3

J'ai des fichiers shapefile (données démographiques/heat map aux USA, comme crime à New York) importés dans une base de données SQL Server 2008, type de données de terrain: Géographie.Comment puis-je afficher des données shapefile/Well-Known-Text sur Google Maps/MS Virtual Earth?

Comment puis-je obtenir ces données, à partir d'une requête sélectionnez, dans un format que je peux ensuite afficher sur Google Maps ou Microsoft Virtual Earth?

merci!

Édition 1: Jusqu'à présent, la meilleure solution a été d'utiliser une DLL tierce (gratuite) (SharpMap). J'espère que quelqu'un pourrait suggérer quelques astuces sql dans sql2008 pour le retourner dans un format compatible ...

Répondre

3

lien SharpMap de Geri Langlois est à 0,9 Si vous voulez bleeding edge, le dépôt est ici: http://sharpmapv2.googlecode.com/svn

En outre, vous devez vous assurer que vos données sont Lat/Long WGS84 et pas autre chose avant de commencer à placer coordonnez les informations dans votre KML. Je ne connais pas un moyen de le faire dans SQLServer2008 (peut-être besoin d'utiliser ogr2ogr).

utilisant STX et STY, vous pouvez probablement générer des coordonnées balises pour le KML

select SHAPE.STX as X 
    ,SHAPE.STY as Y 
    ,SHAPE.STAsText() as WKT 
    ,SHAPE.AsGml() as GML 
from dpu.SW_SERVICE_LOCATIONS 

peut-être quelque chose comme:

SELECT '<coordinates>'+convert(varchar,convert(decimal(20,6), SHAPE.STX),1)+ 
    ','+ convert(varchar,convert(decimal(20,6), SHAPE.STY),1) 
    + '</coordinates>' 
FROM sw_service_locations; 
0

La manière la plus facile de faire ceci est de sélectionner XML, puis de transformer les données en GeoRSS ou en KML. Virtual Earth et Google Maps prennent tous deux en charge le format KML, ce qui serait probablement le moyen le plus simple de le faire.

Il y a cependant des considérations. Si vous avez beaucoup de vertices dans vos données, vous voudrez probablement implémenter une sorte de méthode AJAX pour récupérer uniquement les données dans la vue de la carte. Vous pouvez généraliser les données dans SQL 2008 pour réduire le nombre de sommets en fonction de votre niveau de zoom. Si vous effectuez un zoom arrière au niveau d'un pays, vous n'avez pas besoin de presque autant de détails que de zoomer dans une ville.

MapDotNet a beaucoup de fonctionnalités pour obtenir vos données dans une carte Virtual Earth plus facilement. Il est relativement facile de sélectionner une requête de sélection et d'afficher les données comme vous le souhaitez. Je suis sûr qu'il existe d'autres produits similaires pour Google Maps, mais je ne les ai pas personnellement utilisés. Il prend en charge les polygones ainsi que les cartes thermiques et vous offre beaucoup plus de fonctionnalités que l'utilisation de Virtual Earth. Virtual Earth est puissant, mais il y a beaucoup d'outils SIG que quelqu'un d'un arrière-plan de cartographie s'attendrait à ce que vous deviez programmer dans yoursef.

2

Jetez un coup d'œil à this post - J'ai utilisé avec succès cette fonction pour lire des fichiers de formes et les afficher sur Virtual Earth. Cela devrait vous donner l'idée de base sur la façon de superposer des données de fichier de forme sur Virtual Earth.

Pour utiliser les données spatiales sql server 2008, je regarderais le projet SharpMap sur codeplex. Ce sont les outils utilisés pour le post que j'ai référencé et ils supportent les types de données SQL Server.

+0

hmm .. intéressant. –