Bienvenue! Inscrivez-vous et rejoignez notre communauté :)
  • Login:

Bienvenue sur Forum SIG - Systèmes d'Information Géographique et Géomatique.

Bienvenue sur le forumSIG. S'il s'agit de votre première visite, assurez vous de faire une recherche préalable dans les FAQ SIG. Vous devez vous inscrire avant de pouvoir poster.

Affichage des résultats 1 à 10 sur 10
  1. #1

    Date d'inscription
    décembre 2005
    Localisation
    Entre l'Auvergne et la Lorraine
    Emploi
    Technicien géomatique
    Âge
    38
    Messages
    62

    Par défaut Python avec osgeo.org, ouvrir un WFS - Débutant

    Bonjour,

    Depuis 2 ans, je me suis mis à Python, mais via la bibliothèque Arcpy. Aujourd'hui, je voudrais me lancer dans les bibliothèque plus "Open source"

    Mais j'ai bien du mal à m'y retrouver.

    Mon premier guide, cette page du portailSIG; http://www.portailsig.org/content/le...uid-quando-ubi
    et un premier sujet à faire (surement que je n'ai pas pris le plus simple), ouvrir un lien WFS, passer une requête SQL et récupérer le résultat sous un shape

    J'ai donc noté que je devais utiliser la bibliothèque osgeo.org, que j'ai finalement installé au bout d'une matinée, grâce aux pages suivantes (Merci);
    http://www.forumsig.org/showthread.p...n+module+osgeo
    http://www.gisinternals.com/query.ht...server-6-4.zip
    http://gis.stackexchange.com/questio...ts/74534#74534

    ça semble fonctionner, car lorsque je fait import ogr, je n'ai pas message d'erreur et ogr.GetDriverCount(), me donne 66.

    Et là je veux commencer mon code (j'utilise Pyscripter, pour la réalisation et le lancement de mes scripts), mais je suis complément perdu pour trouver la bonne commande à utiliser...
    exemple j'ai trouver cette page pour ouvrir un WFS; http://gdal.gloobe.org/ogr/formats/wfs.html, mais les codes en exemple en bas de page ne ressemble pas du tout à du python...

    Je ne sais pas par où commencer... Pour arcpy, on est tellement aider par Arcgis.ressource (on tape le nom de l'outil, on a la commande) et pas habitué au monde du libre, je suis perdu

    Est-ce que les druides du ForumSIG peuvent m'aider à trouver les chemins vers la recette de ma potion magique, svp?
    Merci
    Un bougnat en Lorraine!

  2. #2
    Modérateur et rédacteur Supporter(rice)


    Date d'inscription
    octobre 2005
    Localisation
    Louvain-la-neuve
    Emploi
    Géologue
    Organisme
    Université Catholique de Louvain - Région Wallonne
    Messages
    2 539

    Par défaut Re : Python avec osgeo.org, ouvrir un WFS - Débutant

    Regardez du coté du Python GDAL/OGR Cookbook 1.0 documentation: Get WFS layers and iterate over features.

    Je ne comprends pas les débutants dans le monde du vrai Python OpenSource qui veulent commencer pas le module osgeo (osgeo.ogr, osgeo.gdal osgeo.osr). Il est, certes, très puissant, mais pas "Pythonesque" , complexe à souhait et relativement difficile à utiliser.

    Il y a des alternatives (aussi basées sur la librairie GDAL/OGR), beaucoup plus conviviales, logiques et simples à utiliser comme Fiona ou Geopandas pour les couches vectorielles et Rasterio ou GeoRaster pour les couches rasters.

    Les essayer, c'est les adopter car tout est basé sur des simples objets Python (dictionnaires, listes, etc., format GeoJSON) et ne dépendent pas de fonctions externes ("boites noires") comme dans ArcPy. Elles gèrent de manière simple tous les appels aux fonctions C/C++ de la librairie GDAL, à l'inverse du module osgeo.
    Dernière modification par gene ; 04/02/2016 à 14h13.
    "Caminante, no hay camino, el camino se hace al andar" A. Machado

  3. #3

    Date d'inscription
    décembre 2005
    Localisation
    Entre l'Auvergne et la Lorraine
    Emploi
    Technicien géomatique
    Âge
    38
    Messages
    62

    Par défaut Re : Python avec osgeo.org, ouvrir un WFS - Débutant

    Merci gene.

    J'ai finis par trouver la page que tu indiques sur GDAL/OGR, mais je m'y perd vite (mon niveau d'anglais ne m'aide pas non plus).

    En fait, je suis parti sur le fait d'avoir besoin d’accéder à un WFS (en l’occurrence la BD parcellaire de API IGN), puis j'ai suivi les indications de Martin Laloux, qui indique;
    je veux lire des données provenant d'un service WFS

    Ici encore, il faut utiliser le module osgeo.ogr.
    Bon je pensais bien m'attaquer à un peu gros, mais je pensais pouvoir trouver des tutos plus progressifs, mais je ne trouve que des pages tout de suite très technique.
    Tout les gens qui utilise aujourd'hui osgeo, ont bien commencé par débuter, comment ont-ils fait, pour apprendre à comprendre ces pages techniques? (je suis pas sûr d'être claire là...)

    Est-ce qu'avec Fiona, vous pensez que je peu arriver à ce que je souhaite? WFS => shape?
    Merci
    Un bougnat en Lorraine!

  4. #4

    Date d'inscription
    août 2011
    Localisation
    Paris
    Emploi
    Chargé de mission SIG
    Âge
    32
    Messages
    929

    Par défaut Re : Python avec osgeo.org, ouvrir un WFS - Débutant

    Merci gene.
    [...]
    puis j'ai suivi les indications de Martin Laloux, qui indique
    J'aime bien
    désolé par cette cette interruption

  5. #5

    Par défaut Re : Python avec osgeo.org, ouvrir un WFS - Débutant

    Il faut savoir que gene connaît très bien Martin Laloux !
    Donc laissons gene te répondre !
    ...et Fiona ne support pas le WFS.

  6. #6
    Modérateur et rédacteur Supporter(rice)


    Date d'inscription
    octobre 2005
    Localisation
    Louvain-la-neuve
    Emploi
    Géologue
    Organisme
    Université Catholique de Louvain - Région Wallonne
    Messages
    2 539

    Par défaut Re : Python avec osgeo.org, ouvrir un WFS - Débutant

    Bon, commençons par le début: le module le plus simple pour interroger un serveur WMS, WFS etc est le module OWSLib vu sur le Portail dans Python - Interrogation d'un service cartographique. Il permet d'obtenir la liste des couches disponibles de manière plus rapide que ogr:


    from owslib.wms import WebMapService
    # je veux interroger les services wfs du Massachusetts Data from MassGIS
    wfs= WebMapService('http://giswebservices.massgis.state.ma.us/geoserver/wfs')
    wfs.identification.type
    'OGC:WMS'
    # les couches: combien de couches disponibles
    print len(list(wfs.contents))
    1107 # avec list(list(wfs.contents) j'aurai les 1107 couches dans une liste Python
    # quelques couches
    list(wfs.contents)[1060:1065]
    ['massgis:RoyalstonEnvironsL3TaxParAssess', 'massgis:SETB.MSAG_BOUNDARIES_POLYM_911', 'massgis:SETB.ROAD_DATA_ISSUES', 'massgis:SETB.STREETS_911', 'massgis:SETB.STREETS_911_TO_EDIT']
    # analyse d'une couche
    wfs['massgis:SETB.STREETS_911'].boundingBox
    (-8404.757, 777713.74, 330696.964, 1008453.878, 'EPSG:26986')


    Maintenant, je vais utiliser osgeo.ogr pour extraire les éléments de la couche 'massgis:SETB.STREETS_911' sous format GeoJSON pour l'utiliser dans Fiona pour créer le fichier Shapefile résultant (beaucoup plus rapide que osgeo.ogr), voir A quick look at the WFS GDAL Driver

    Avec osgeo.ogr ou osgeo.gdal, il suffit d'ouvrir la couche

    Dans le cas d'un raster: couche = gdal.Open(fichier)
    Dans le cas d'une couche shapefile: source = ogr.Open(shapefile)
    ....
    Dans le cas d'une couche wfs:


    from osgeo import ogr
    driver = ogr.GetDriverByName('WFS')
    # le serveur WFS
    wfs_ds = driver.Open("WFS:http://giswebservices.massgis.state.ma.us/geoserver/wfs")
    # je veux la couche 'massgis:SETB.STREETS_911'
    couche = wfs_ds.GetLayerByName('massgis:SETB.STREETS_911')
    # représentation GeoJSON des éléments de la couche et premier élément
    elem = couche.GetNextFeature()
    print elem.ExportToJson()
    {'geometry': {'type': 'LineString', 'coordinates': [(301259.0878000036, 831227.6783999987), (301272.3924999982, 831215.7041999996), (301289.2449999973, 831204.1735000013), (301306.9844999984, 831193.9732999988), (301320.28920000046, 831183.5513999984)]}, 'type': 'Feature', 'id': '0', 'properties': OrderedDict([(u'LINK_ID', 0.0), (u'ST_NAME', u'SANDY NECK'), (u'FEAT_ID', 0.0), (u'ST_NM_PREF', None), (u'ST_TYP_BEF', None), (u'ST_NM_BASE', None), (u'ST_NM_SUFF', None), (u'ST_TYP_AFT', None), (u'ST_TYP_ATT', u'N'), (u'ADDR_TYPE', None), (u'L_REFADDR', None), (u'L_NREFADDR', None), (u'L_ADDRSCH', None), (u'R_REFADDR', None), (u'R_NREFADDR', None), (u'R_ADDRSCH', None), (u'ROUTE_TYPE', None), (u'L_TOWNMSAG', u'WEST BARNSTABLE'), (u'R_TOWNMSAG', u'WEST BARNSTABLE'), (u'L_TOWNPOST', u'WEST BARNSTABLE'), (u'R_TOWNPOST', u'WEST BARNSTABLE'), (u'L_TOWNREAL', u'BARNSTABLE'), (u'R_TOWNREAL', u'BARNSTABLE'), (u'L_TOWN_ID', u'20'), (u'R_TOWN_ID', u'20'), (u'L_COUNTY', u'BARNSTABLE'), (u'R_COUNTY', u'BARNSTABLE'), (u'L_STATE', u'MA'), (u'R_STATE', u'MA'), (u'MSAG_STREE', u'SANDY NECK'), (u'MSAG_PREF', None), (u'MSAG_BASE', u'SANDY NECK'), (u'MSAG_SUFF', None), (u'MSAG_TYPE', None), (u'ADDR_SRC', u'MGIS'), (u'L_REFMGIS', None), (u'L_NREFMGIS', None), (u'R_REFMGIS', None), (u'R_NREFMGIS', None), (u'RANGE_SRC', u'MGIS'), (u'RT_NUMBER', None), (u'STREET_SOU', u'BING2011 ORTHO'), (u'NUM_STNMES', u'1'), (u'L_AREA_ID', 21014301.0), (u'R_AREA_ID', 21014301.0), (u'L_POSTCODE', u'02668'), (u'R_POSTCODE', u'02668'), (u'FUNC_CLASS', None), (u'PAVED', u'N'), (u'PRIVATE', u'Y'), (u'BRIDGE', u'N'), (u'TUNNEL', u'N'), (u'RAMP', u'N'), (u'TOLLWAY', u'N'), (u'FERRY_TYPE', u'H'), (u'MAPSTAR_FI', None), (u'LINK_FEAT', u'ibc2S8EoHhMnXRk395mMNBMnHHE='), (u'ST_NAME_ST', u'SANDY NECK'), (u'CREATE_DAT', 20121128), (u'EDIT_DATE', 19000102), (u'NOTES', u'ML-ADDED FOR ACCESS TOWARDS BUILT "SANDY NECK" L3 PARCELS'), (u'DJG', None), (u'DJR', None), (u'NODEX', None), (u'FNODE', None), (u'TNODE', None), (u'ST_COMM_ID', None), (u'MULTI_P', None), (u'IN_MSAG', u'N'), (u'STREET_LCO', u'922761'), (u'STREET_RCO', None), (u'ALT_NAME', None)])}


    Si vous voulez tous les éléments:


    elements = [feature.ExportToJson() for feature in couche]


    Maintenant, je peux créer le shapefile résultant avec Fiona. Je connais le CRS (EPSG:26986) et le schema des couches (c'est le point le plus délicat que je n'aborderai pas ici)


    import fiona
    from fiona.crs import from_epsg
    with fiona.open("resultat.shp", 'w',crs=from_epsg(26986),driver='ESRI Shapefile', schema=ogr.schema) as output:
    for elem in elements:
    output.write(elem)


    En seul ensemble:


    with fiona.open("resultat.shp", 'w',crs=from_epsg(26986),driver='ESRI Shapefile', schema=ogr.schema) as output:
    for elem in couche:
    output.write(elem)



    Et le résultat final (avec 10500 objets et 72 champs)

    Cliquez sur l'image pour la voir en taille réelle 

Nom : 		modified.png 
Affichages :	33 
Taille :		268,9 Ko 
ID : 			8035

    Temps d'exécution, environ 1 minute, mais ça dépend de la connexion Internet, donc ça n'a beaucoup de signification.

    Quelques références sur le Portail:
    - Python: utilisation des couches vectorielles et matricielles dans une perspective géologique, sans logiciel SIG

    et surtout Gis Stackexchange site de questions/réponses en anglais, mais les codes sont universels...

    Pour lewisvillierme, bien que Fiona ne soit jamais destiné à traiter autre chose que des fichiers, il y a d'autres développeurs qui tentent actuellement de combiner Fiona et OWSLib pour permettre de traiter les services WFS directement.


    (Á part ça, je suis aussi Martin Laloux sur le Portail et gene sur Gis Stackexchange )
    Dernière modification par gene ; 05/02/2016 à 14h10.
    "Caminante, no hay camino, el camino se hace al andar" A. Machado

  7. #7

    Date d'inscription
    décembre 2005
    Localisation
    Entre l'Auvergne et la Lorraine
    Emploi
    Technicien géomatique
    Âge
    38
    Messages
    62

    Par défaut Re : Python avec osgeo.org, ouvrir un WFS - Débutant

    Big merci gene.

    Je me plonge dans tous ça (un peu de vacances entre temps).

    Et je fais un retour dans une quinzaine.

    Encore merci.
    Un bougnat en Lorraine!

  8. #8
    Modérateur et rédacteur Supporter(rice)


    Date d'inscription
    octobre 2005
    Localisation
    Louvain-la-neuve
    Emploi
    Géologue
    Organisme
    Université Catholique de Louvain - Région Wallonne
    Messages
    2 539

    Par défaut Re : Python avec osgeo.org, ouvrir un WFS - Débutant

    Bon, je me rends compte que j'ai été trop rapide et je détaille la démarche avec un exemple plus simple (le wfs précédent nécessite la dernière version de GDAL/OGR). Je vais utiliser le service WFS hollandais http://geodata.nationaalgeoregister....jkegrenzen/wfs qui est beaucoup plus simple à traiter.

    1) avec owslib

    a) les couches


    from owslib.wms import WebMapService
    wfs= WebMapService('http://geodata.nationaalgeoregister.nl/bestuurlijkegrenzen/wfs')
    list(wfs.contents)
    ['gemeenten', 'landsgrens', 'provincies']
    # uniquement trois couches
    wfs['provincies'].boundingBox
    (10425.156, 306846.198, 278026.09, 621876.3, 'EPSG:28992')
    # d'où
    project = wfs['provincies'].boundingBox[4]
    box = wfs['provincies'].boundingBox[:4]


    b) quelles sont les opérations que je peux réaliser sur une des couches ?

    [op.name for op in wfs.operations]
    ['GetCapabilities', 'GetMap', 'GetFeatureInfo', 'DescribeLayer', 'GetLegendGraphic', 'GetStyles']
    # ce qui nous intéresse ici est le GetMap pour obtenir les cartes
    wfs.getOperationByName('GetMap').methods
    [{'url': 'http://geodata.nationaalgeoregister.nl/bestuurlijkegrenzen/wms?SERVICE=WMS&', 'type': 'Get'}]
    wfs.getOperationByName('GetMap').formatOptions
    ['image/png', 'application/atom xml', 'application/atom+xml', 'application/openlayers', 'application/pdf', 'application/rss xml', 'application/rss+xml', 'application/vnd.google-earth.kml', 'application/vnd.google-earth.kml xml', 'application/vnd.google-earth.kml+xml', 'application/vnd.google-earth.kml+xml;mode=networklink', 'application/vnd.google-earth.kmz', 'application/vnd.google-earth.kmz xml', 'application/vnd.google-earth.kmz+xml', 'application/vnd.google-earth.kmz;mode=networklink', 'atom', 'image/geotiff', 'image/geotiff8', 'image/gif', 'image/gif;subtype=animated', 'image/jpeg', 'image/png8', 'image/png; mode=8bit', 'image/svg', 'image/svg xml', 'image/svg+xml', 'image/tiff', 'image/tiff8', 'kml', 'kmz', 'openlayers', 'rss', 'text/html; subtype=openlayers']


    c) Représentation d'une couche au format image/png

    img = wfs.getmap(layers=['provincies'], srs=project, bbox=box,size=(300, 250),format='image/png',transparent=True)
    out = open('resultat', 'wb')
    out.write(img.read())
    out.close()


    Cliquez sur l'image pour la voir en taille réelle 

Nom : 		jpl_mosaic_visb.png 
Affichages :	24 
Taille :		12,2 Ko 
ID : 			8040

    2) avec ogr

    a) les couches


    from osgeo import ogr
    wfs = ogr.Open("WFS:http://geodata.nationaalgeoregister.nl/bestuurlijkegrenzen/wfs")
    for i in range(0, wfs.GetLayerCount()):
    layer = wfs.GetLayerByIndex(i)
    sr = layer.GetSpatialRef()
    print 'couche: %s, Features: %s, SR: %s...' % (layer.GetName(), layer.GetFeatureCount(), sr.ExportToWkt()[0:50])
    couche: bestuurlijkegrenzen:gemeenten, Features: 393, SR: PROJCS["Amersfoort / RD New",GEOGCS["Amersfoort",D...
    couche: bestuurlijkegrenzen:landsgrens, Features: 1, SR: PROJCS["Amersfoort / RD New",GEOGCS["Amersfoort",D...
    couche: bestuurlijkegrenzen:provincies, Features: 12, SR: PROJCS["Amersfoort / RD New",GEOGCS["Amersfoort",D...


    b) Sauvegarde d'une couche au format GeoJSON
    Je vais sauvegarder ici une couche au format GeoJSON: ce format peut être lu directement par QGIS, GRASS GIS, entre autres, PostGIS, SpatiaLite, et par les librairies JavaScript OpenLayers ou Leaflet avec la propriété Feature Collection. C'est le plus facile du fait qu'OGR dispose de la commande .ExportToJson() et qu'on n'a pas à se tracasser avec la création du schéma d'un fichier shapefile.


    couche = wfs.GetLayerByName('bestuurlijkegrenzen:provincies')
    # le résultat de .ExportToJson() est une chaîne de caractères alors que GeoJSON attend un dictionnaire Python
    import json
    # tous les éléments sous forme d'une liste de dictionnaires
    elements = [json.loads(elem.ExportToJson()) for elem in couche]
    # création de la Feature Collection résultante
    couche_res = {"type": "FeatureCollection", "features": elements}
    # sauvegarde de la couche résultante en un simple fichier JSON
    with open('resultat.geojson', 'w') as sortie:
    # trabsformation du dictionnaire Python en une chaîne de caractères au format JSON
    sortie.write(json.dumps(couche_res))


    Résultat dans QGIS

    Cliquez sur l'image pour la voir en taille réelle 

Nom : 		résultat.png 
Affichages :	25 
Taille :		120,7 Ko 
ID : 			8041

    c) problème en suspens

    Il reste à traiter du problème de la projection (par défaut WGS84) dans un fichier GeoJSON.

    crs = { "type": "name", "properties": { "name": "EPSG:28992"}}
    couche = {"type": "FeatureCollection", "features": elements,"crs":crs}
    Dernière modification par gene ; 05/02/2016 à 22h43.
    "Caminante, no hay camino, el camino se hace al andar" A. Machado

  9. #9

    Date d'inscription
    décembre 2005
    Localisation
    Entre l'Auvergne et la Lorraine
    Emploi
    Technicien géomatique
    Âge
    38
    Messages
    62

    Par défaut Re : Python avec osgeo.org, ouvrir un WFS - Débutant

    Bonjour,

    Ma réponse tarde un peu, dsl.
    Je n'ai pas abandonné, je suis toujours sur le sujet, mais j'ai passé beaucoup de temps à essayer d'installer OWSLib sur mon environnement Windows + Arcgis... que je viens juste de réussir;
    http://www.forumsig.org/showthread.p...642#post340642

    ça y est je peux me plonger dans le code!
    Un bougnat en Lorraine!

  10. #10

    Date d'inscription
    décembre 2005
    Localisation
    Entre l'Auvergne et la Lorraine
    Emploi
    Technicien géomatique
    Âge
    38
    Messages
    62

    Par défaut Re : Python avec osgeo.org, ouvrir un WFS - Débutant

    Bonjour Gene,

    Chacune de tes étapes décrites fonctionnent bien, sous mon installation Windows.
    Cela fonctionne dans mon Pyscripter, comme dans la console python de Qgis.

    Je tente donc de passer à mon étape suivante, mon authentification sur API IGN.
    Ce matin j'avais écris le message ci-dessous, car je pensais m'authentifier, puis ensuite ouvrir l'URL avec Owslib, mais là je pense que ce n'est pas une bonne idée.
    Je laisse ce que j'ai écris, mais je pense qu'il faut l'oublier (qu'en pensez-vous?);

    Pour cela, j'ai trouvé cette page, avec les libs urllib2 ou requests;
    https://gist.github.com/kennethreitz/973705

    exemple;
    Code:
    import urllib2
    
    gh_url = 'https://wxs.ign.fr/MA_CLEF/geoportail/wfs?'
    
    req = urllib2.Request(gh_url)
    
    password_manager = urllib2.HTTPPasswordMgrWithDefaultRealm()
    password_manager.add_password(None, gh_url, 'USER', 'MDP')
    
    auth_manager = urllib2.HTTPBasicAuthHandler(password_manager)
    opener = urllib2.build_opener(auth_manager)
    
    urllib2.install_opener(opener)
    
    handler = urllib2.urlopen(req)
    
    handler.getcode()
    handler.headers.getheader('content-type')
    Mais La réponse est soit une erreur 403;
    Code:
    HTTPError: HTTP Error 403: Forbidden
    Soit celle-ci;
    Code:
    C:\Python27\ArcGIS10.3\lib\site-packages\requests-2.9.1-py2.7.egg\requests\packages\urllib3\util\ssl_.py:315: SNIMissingWarning: An HTTPS request has been made, but the SNI (Subject Name Indication) extension to TLS is not available on this platform.
     This may cause the server to present an incorrect TLS certificate, which can cause validation failures. For more information, see https://urllib3.readthedocs.org/en/latest/security.html#snimissingwarning.
      SNIMissingWarning
    C:\Python27\ArcGIS10.3\lib\site-packages\requests-2.9.1-py2.7.egg\requests\packages\urllib3\util\ssl_.py:120: InsecurePlatformWarning: A true SSLContext object is not available. This prevents urllib3 from configuring SSL appropriately and may cause certain SSL connections to fail.
    For more information, see https://urllib3.readthedocs.org/en/latest/security.html#insecureplatformwarning.
      InsecurePlatformWarning
    Est-ce une erreur dans ce que j'utilise, où est-ce l'API qui est vraiment bloqué pour ce type d'interrogation?

    Je suis coïncé
    Je pense que la méthode est plus dans la rédaction d'un xml contenant l'authentification au WFS et la requête SQL (sélection de la commune et de la section).
    Puis d'ouvrir le XML avec la méthode ogr, non?
    wfs = ogr.Open("c:\\...xml")

    Merci
    Dernière modification par little_kevin ; 29/02/2016 à 14h16.
    Un bougnat en Lorraine!

 

 

Discussions similaires

  1. [Données] Fond de carte avec table (débutant SIG)‏
    Par HumMouais dans le forum Ressources
    Réponses: 2
    Dernier message: 03/02/2016, 00h35
  2. [QGIS 2.x] Impossible d'ouvrir un script dans la console python
    Par vcoudrain dans le forum Assistance et Programmation
    Réponses: 3
    Dernier message: 29/11/2015, 16h05
  3. [QGIS 2.x] Python ne trouve pas la librairie d'osgeo
    Par poulpy dans le forum Assistance et Programmation
    Réponses: 0
    Dernier message: 04/05/2015, 09h48
  4. [Autres] Liblas : installation avec OSGEO
    Par sandrine38 dans le forum Assistance et Programmation
    Réponses: 2
    Dernier message: 09/12/2010, 08h31
  5. [MapServer] Débutant en PHP/MapScript avec PostGIS
    Par gondek dans le forum Assistance et Programmation
    Réponses: 1
    Dernier message: 10/06/2005, 18h08

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •