Nous utilisons des cookies pour vous garantir la meilleure expérience sur notre site. Si vous continuez à utiliser ce dernier, nous considèrerons que vous acceptez l'utilisation des cookies. J'ai compris ! ou En savoir plus !.
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é ?

Annonce

Rencontres QGIS 2025

L'appel à participation est ouvert jusqu'au 19 janvier 2025!

#1 Thu 03 May 2012 10:49

Alexandre David
Participant occasionnel
Lieu: Saint-Etienne
Date d'inscription: 27 Sep 2011
Messages: 16

[Geoserver] Couche vecteur PostGIS 3D sur Geoserver

Bonjour à tous,

Je me casse les dents depuis 2 semaines afin de trouver un moyen de relier ma database PostgreSQL 9.1 / PostGIS 2.0 à Geoserver 2.1.3.

Quand j'insers une couche vectorielle 3D en format .shp, tout va bien. Idem pour mes tables PostGIS 2D. Mais quand ces dernières sont en 3D, Geoserver les force à perdre leur troisième dimension.

Quelqu'un a-il déjà réussi la manipulation que j'essaie de faire ? Sinon connaissez-vous un seveur cartographique plus adapté à ma problématique ?

Merci d'avance.

A.D.

Hors ligne

 

#2 Fri 04 May 2012 11:01

zone12
Participant actif
Date d'inscription: 3 Jan 2008
Messages: 56

Re: [Geoserver] Couche vecteur PostGIS 3D sur Geoserver

Bonjour,

Il semble que Geoserver ne gère pas encore la 3D. Sauf peut être à servir du KML vers Google Earth.

Il ne semble pas non plus que Mapserver puisse répondre à votre besoin.

Tenez nous au courant.

Hors ligne

 

#3 Fri 04 May 2012 11:06

zone12
Participant actif
Date d'inscription: 3 Jan 2008
Messages: 56

Re: [Geoserver] Couche vecteur PostGIS 3D sur Geoserver

Une autre piste peut être, OpenWebGlobe ...

Hors ligne

 

#4 Thu 10 May 2012 14:41

Alexandre David
Participant occasionnel
Lieu: Saint-Etienne
Date d'inscription: 27 Sep 2011
Messages: 16

Re: [Geoserver] Couche vecteur PostGIS 3D sur Geoserver

Bonjour,

J'ai trouvé un solution à mon problème de 3d. Etant donné que les serveurs cartographiques libres actuels sont assez limités pour la 3d, je suis passé par un export php de ma base de données PostGIS afin de pouvoir créer des documents .kml. La petite astuce que j'ai utilisé réside dans la requête sql que j'utilise.
Le problème d'exporter avec st_askml est qu'il n'y a pas possibilité de rajouter des balises dans celui-ci. J'ai donc sélectionné les caractères que je veux sortir avec la fonction substr(geometry, integer) et supprimer les balises précédent les coordonnées.
Ensuite, il me suffit de rajouter <extrude>0</extrude> et <tessellate>1</tessellate> pour lui demander de prendre en compte la troisième dimension.

exemple de Query :
$query = 'SELECT gid,name,substr(st_askml(geom,10),28) as geometrie from mon_schema.ma_table';

exemple de code :

Code:

<?php

$conn = pg_pconnect ("host=localhost port=5432 dbname=ma_db user=postgres password=*****");
if (!$conn) {
  echo "Une erreur est survenue.\n";
  exit;
}

// Selects all the rows in the markers table.
$query = 'SELECT gid,name,substr(st_askml(geom,10),28) as geometrie from mon_schema.ma_table';
$result = pg_query($query);

if (!$result) {
  echo "Une erreur est survenue.\n";
  exit;
}

// Creates an array of strings to hold the lines of the KML file.
$kml = array('<?xml version="1.0" encoding="UTF-8"?>');
$kml[] = '<kml xmlns="http://earth.google.com/kml/2.2">';
$kml[] = ' <Document>';
$kml[] = ' <Style id="yellowLineGreenPoly">';
$kml[] = ' <LineStyle>';
$kml[] = ' <color>ff0000ff</color>';
$kml[] = ' </LineStyle>';
$kml[] = ' <PolyStyle>';
$kml[] = ' <color>ffff0000</color>';
$kml[] = ' </PolyStyle>';
$kml[] = ' </Style>';

// Iterates through the rows, printing a node for each row.
while ($row = pg_fetch_assoc($result))
{
  $kml[] = ' <Placemark id="placemark' . $row['gid'] . '">';
  $kml[] = ' <name>' . htmlentities($row['name]) . '</name>';
  $kml[] = ' <visibility>0</visibility>';
  $kml[] = ' <description>Ma description</description>';
  $kml[] = ' <styleUrl>#yellowLineGreenPoly</styleUrl>';
  $kml[] = ' <MultiGeometry>';
  $kml[] = ' <LineString>';
  $kml[] = ' <extrude>0</extrude>';
  $kml[] = ' <tessellate>1</tessellate>';
  $kml[] = ' <altitudeMode>relativeToGround</altitudeMode>';
  $kml[] = $row['geometrie'];
  $kml[] = ' </Placemark>';
 
} 

// End XML file
$kml[] = ' </Document>';
$kml[] = '</kml>';
$kmlOutput = join("\n", $kml);
header('Content-type: application/vnd.google-earth.kml+xml');
header("Content-Disposition: attachment; filename=mon_kml.kml");
echo $kmlOutput;
?>

Cette page php est à mettre dans la partie www du serveur apache que vous installez avec le Stack Builder. Ne pas oublier non plus d'installer phppgadmin.

Cordialement,

A.D.

Dernière modification par Alexandre David (Thu 10 May 2012 14:42)

Hors ligne

 

Pied de page des forums

Powered by FluxBB