banniere

Le portail francophone de la géomatique


Toujours pas inscrit ? Mot de passe oublié ?
Nom d'utilisateur    Mot de passe              Toujours pas inscrit ?   Mot de passe oublié ?

#1 Tue 25 May 2010 22:49

seb.49
Participant occasionnel
Date d'inscription: 5 Jun 2009
Messages: 19

Créer un référentiel des rues a partir de données OSM

Bonjour,

Pour les besoins d'une application ASP.NET / Sql Server 2008, je dois intégrer un référentiel des rues de certaines grosses villes française.

N'y connaissant pas grand chose en SIG, j'ai quand meme trouvé chez gisgraphy.com, un fichier OpenStreetMap qui ressemble à ce que je recherche (http://download.gisgraphy.com/openstreetmap/)

Ce fichier ne contient à priori pas d'information permettant de retrouver la ville correspondant à la rue mais il contient la position géographique du centre des rues. Avec ca et un fichier contenant les limites de communes (fichier que je n'ai pas), je pense pouvoir m'en sortir.
Cependant, la position du centre des rues est au format HEXEWKB. J'ai beau cherché, avec PostGis (et Google), je ne parviens pas à transformer cette donnée en information que je puisse utilisée (ex: Point(Lat, Long))

L'objet de ce post est donc de répondre à plusieurs questions :
1 - Est ce que je suis sur la bonne voir pour me constituer ce référentiel d'adresse ?
2 - Y a t-il un moyen de convertir ce HEXEWKB en donnée utilisable avec PostGis ?
3 - Si la réponse à la question est oui, je pense que je pourrais faire la même chose avec Sql Server 2008 (à la rigueur en passant par PostGis avant d'intégrer les données), non ?

Merci de m'avoir lu.

Hors ligne

 

#2 Wed 26 May 2010 01:32

ThomasG
Membre
Lieu: Nantes
Date d'inscription: 9 Sep 2005
Messages: 946
Site web

Re: Créer un référentiel des rues a partir de données OSM

Bonsoir,

1 - Est ce que je suis sur la bonne voir pour me constituer ce référentiel d'adresse ?
Sans réponse, je ne travaille pas sur le sujet.
2 - Y a t-il un moyen de convertir ce HEXEWKB en donnée utilisable avec PostGis ?

Code:

SELECT ST_AsText('01010000200400000000000000000000000000000000000000');
SELECT ST_X(ST_AsText('01010000200400000000000000000000000000000000000000'));
SELECT ST_Y(ST_AsText('01010000200400000000000000000000000000000000000000'));

3 - Si la réponse à la question est oui, je pense que je pourrais faire la même chose avec Sql Server 2008 (à la rigueur en passant par PostGis avant d'intégrer les données), non ?
http://www.bostongis.com/?content_name= … ompare#178 pour une petite comparaison
Pour les références des fonctions spatiales http://msdn.microsoft.com/fr-fr/library … .105).aspx pour voir si les fonctions répondront à vos problématiques.

Si vous devez utiliser OpenStreetMap (en respectant la licence), http://www.google.fr/search?hl=fr&s … p;gs_rfai= vous renvoie vers des manipulations utilisant du .Net

Cordialement

ThomasG

Hors ligne

 

#3 Wed 26 May 2010 06:54

ChristopheV
Membre
Lieu: Ajaccio
Date d'inscription: 7 Sep 2005
Messages: 3195
Site web

Re: Créer un référentiel des rues a partir de données OSM

Bonjour,

Pour la question 1: idem Thomas.

Pour les reste, pourquoi passer par PostGis avant d'aller vers SQLServer, ou inversement pourquoi utiliser SQLserver2008 au lieu de PostGis ? On se connecte très bien à PostGis depuis .Net avec Npgsql.

Ensuite vous pouvez utiliser directement le format wkb pour le transformer en objet géométrique, cela sera plus rapide que de passer par une conversion vers un format texte (wkt). Pour cela il faut consulter la page de l'OGC sur les standards (WKB, WKT) qui donne une description complète du format Voir cette discussion :
http://georezo.net/forum/viewtopic.php?id=67132

un exemple de code en VB.Net aisément traduisible en asp.net pour lire le wkb :

http://www.developpez.net/forums/d92287 … x-doctets/

A+


Christophe
L'avantage d'être une île c'est d'être une terre topologiquement close

Hors ligne

 

#4 Wed 26 May 2010 09:22

seb.49
Participant occasionnel
Date d'inscription: 5 Jun 2009
Messages: 19

Re: Créer un référentiel des rues a partir de données OSM

Bonjour et merci pour vos réponses.


@ThomasG
Super le SELECT ST_AsText('01010000200400000000000000000000000000000000000000'); ca marche avec PostGis mais y a til un équivalent Sql Server 2008 comme ca je pourrais tout faire dans Sql Server

[EDIT] Il semble que ce soit possible avec Sql Server 2008 R2 (mais je ne l'ai pas) http://msdn.microsoft.com/en-us/library/bb933954.aspx [/EDIT]

@Christophe V.
C'est comme ça, l'architecture est full Microsoft, l'application n'est pas réellement un SIG mais utilise quelques fonction de SIG quand même.
Je serais ravi de pouvoir tous faire en Sql Server directement mais comme je pense qu'il n'est pas possible de lire les HEXEWKB avec Sql Server, je voulais utiliser POstGis entre les deux.
C'est pour ma moulinette interne car une fois le référentiel des rue des villes faits, on y touche plus de facon automatique.

Encore merci pour vos réponse et si vous pouvez m'aiguiller pour faire marcher SELECT ST_AsText('01010000200400000000000000000000000000000000000000'); en SqlServer, je suis très interessé

Dernière modification par seb.49 (Wed 26 May 2010 09:51)

Hors ligne

 

#5 Wed 26 May 2010 10:06

ChristopheV
Membre
Lieu: Ajaccio
Date d'inscription: 7 Sep 2005
Messages: 3195
Site web

Re: Créer un référentiel des rues a partir de données OSM

Bonjour,

Je suppose depuis le début que ce que tu nommes du HEXEWKB est en fait du WKB sous forme hexadécimale. Donc pour intégrer ta source de donnée en WKB directement dans ta base sqlserver2008 il existe des fonctions comme

STGeomFromWKB ( 'WKB_geometry' , SRID ) voir en fait la MSDN ici:

http://msdn.microsoft.com/fr-fr/library/bb933894


Pour le fait du full Microsoft j'ai rien contre je développe moi même en .Net constamment.


Christophe
L'avantage d'être une île c'est d'être une terre topologiquement close

Hors ligne

 

#6 Wed 26 May 2010 10:54

seb.49
Participant occasionnel
Date d'inscription: 5 Jun 2009
Messages: 19

Re: Créer un référentiel des rues a partir de données OSM

dans le descritpif du fichier OSM que j'ai il y a

3 : location; The middle point of the street in HEXEWKB


Code:

STGeomFromWKB ( 'WKB_geometry' , SRID ) voir en fait la MSDN ici:

ca fonctionne bien pour les données geometry mais pas geography.

Désolé, je suis vraiement un newbies sur ces questions spatiales et autant dire que je plane un peu.

Hors ligne

 

#7 Wed 26 May 2010 11:59

ChristopheV
Membre
Lieu: Ajaccio
Date d'inscription: 7 Sep 2005
Messages: 3195
Site web

Re: Créer un référentiel des rues a partir de données OSM

Bonjour,

Un peu de lecture:

http://technet.microsoft.com/fr-fr/libr … 64711.aspx

Et apparemment les méthodes sont surchargées, elles prennent en compte les deux types geography et geometry

http://msdn.microsoft.com/en-us/library … .105).aspx

A+


Christophe
L'avantage d'être une île c'est d'être une terre topologiquement close

Hors ligne

 

#8 Wed 26 May 2010 13:45

seb.49
Participant occasionnel
Date d'inscription: 5 Jun 2009
Messages: 19

Re: Créer un référentiel des rues a partir de données OSM

En effet, ca marche avec

Code:

select geography::STGeomFromText('POINT (7.06793398474461 49.2990657559392)', 4326).STAsBinary()
--qui renvoi 0x01010000006D0F8B7C90451C40638E64C947A64840
select geography::STGeomFromWKB(0x01010000006D0F8B7C90451C40638E64C947A64840, 4326)

maintenant, je cherche comment convertir ça :
0101000000670F8B7C90451C40608E64C947A64840
qui vient de OSM et qui donne grace à PostGis POINT(7.06793398474461 49.2990657559392)
directement via SqlServer

Hors ligne

 

#9 Wed 26 May 2010 13:57

seb.49
Participant occasionnel
Date d'inscription: 5 Jun 2009
Messages: 19

Re: Créer un référentiel des rues a partir de données OSM

seb.49 a écrit:

En effet, ca marche avec

Code:

select geography::STGeomFromText('POINT (7.06793398474461 49.2990657559392)', 4326).STAsBinary()
--qui renvoi 0x01010000006D0F8B7C90451C40638E64C947A64840
select geography::STGeomFromWKB(0x01010000006D0F8B7C90451C40638E64C947A64840, 4326)

maintenant, je cherche comment convertir ça :
0101000000670F8B7C90451C40608E64C947A64840
qui vient de OSM et qui donne grace à PostGis POINT(7.06793398474461 49.2990657559392)
directement via SqlServer


[EDIT]
Oh je suis fatigué ou quoi moi

Code:

OSM donne______01010000006D0F8B7C90451C40638E64C947A64840
SQL veut____ 0x01010000006D0F8B7C90451C40638E64C947A64840

j'ai juste à faire une requete select geography::STGeomFromWKB(0x" + DATA_OSM + ", 4326) et ca marche[/EDIT]

Hors ligne

 

#10 Wed 26 May 2010 13:58

ChristopheV
Membre
Lieu: Ajaccio
Date d'inscription: 7 Sep 2005
Messages: 3195
Site web

Re: Créer un référentiel des rues a partir de données OSM

Bonjour

Tu es sur de ton :

0101000000670F8B7C90451C40608E64C947A64840

Qui ne diffère que de deux "caractères" par rapport à la chaîne que tu a écrite dans la fenêtre code ? (on oublie le 0x )

Si tu injecte directement ce qui te viens d'OSM dans STGeomFromWKB tu obtiens quoi ?


Christophe
L'avantage d'être une île c'est d'être une terre topologiquement close

Hors ligne

 

#11 Wed 26 May 2010 13:59

ChristopheV
Membre
Lieu: Ajaccio
Date d'inscription: 7 Sep 2005
Messages: 3195
Site web

Re: Créer un référentiel des rues a partir de données OSM

Suite à l'Edit:

Je préfère !!


Christophe
L'avantage d'être une île c'est d'être une terre topologiquement close

Hors ligne

 

Pied de page des forums

Powered by FluxBB