Suite

Traiter les projections personnalisées (à partir du fichier prj) dans PostGIS (également GeoServer et OpenLayers)


Fondamentalement, je souhaite effectuer des requêtes spatiales telles que des calculs de distance dans PostGIS à l'aide de données de fichiers de formes avec différentes projections, dont certaines n'ont pas de code SRID que je peux trouver et que le package python osr ne semble pas pouvoir gérer. Que fais-je? Je comprends mal les projections et comment les gérer.

Histoire complète :

Je crée un système utilisant OpenLayers, GeoServer et PostGIS. Mes données proviennent de fichiers de formes que j'ai chargés dans PostGIS à l'aide de shp2psql. La plupart des fichiers de formes n'avaient pas de fichier .prj associé et semblent simplement être long/lat / EPSG:4326. Cependant, pour certains fichiers, les coordonnées ont des millions qui ne sont clairement pas des degrés (heureusement, il y avait des fichiers .prj ici). Dans PostGIS, les données apparaissent sous forme de colonne de géométrie, pas de géographie. Jusqu'à présent, je me préoccupais principalement de l'affichage des données dans OpenLayers, je me suis donc occupé de la projection dans GeoServer en spécifiant un code EPSG lorsque j'ai ajouté une nouvelle couche. Habituellement, c'était 4326, une fois c'était un code standard que j'ai trouvé en utilisant http://www.prj2epsg.org/search, et une fois j'ai créé une projection personnalisée en ajoutant le WKT aux fichiers epsg.properties dans le répertoire de données. Tout semble alors s'afficher correctement dans OpenLayers ; il est difficile d'en être sûr car je ne connais pas personnellement les données, mais il semble que tout s'aligne. Je n'ai pas eu à écrire de code côté client (OpenLayers) relatif aux projections, tout est en termes de longitude et latitude et très simple.

Maintenant, supposons que je spécifie dans le client (par exemple en cliquant sur la carte OpenLayers) les coordonnées d'un point en utilisant la longitude et la latitude, et une distance telle que 100 km, et je veux afficher toutes les caractéristiques d'une certaine couche qui se trouvent dans ladite distance dudit point. Donc, dans PostGIS, j'aimerais dire quelque chose comme :

SELECT gid, geom FROM layer WHERE ST_Distance(geom, ST_GeomFromText('POINT(24 -30)')) < 100000;

À l'heure actuelle, cela renvoie tout (pour la plupart des couches) car la colonne geom est un type de géométrie au lieu de géographie. Pour autant que je sache, je dois tout transformer en type de géographie, en le transformant en EPSG:4326 si nécessaire. Ensuite, je devrais juste pouvoir tout déclarer dans GeoServer comme EPSG:4326 et ne plus m'inquiéter de rien là-bas, et ST_Distance devrait renvoyer les résultats en mètres calculés sur le sphéroïde.

Mais pour certaines de mes données, je ne vois pas comment faire cela. Par exemple, voici le texte du fichier .prj pour l'un des calques :

PROJCS["SA Albers Equal Area",GEOGCS["GCS_Hartebeesthoek_1994",DATUM["D_Hartebeesthoek_1994",SPHEROID["WGS_1984",6378137.0,298.257223563]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.01745329251994 ],PROJECTION["Albers"],PARAMETRE["False_Easting",0.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",24.0],PARAMETER["Standard_Parallel_1",-24.0],PARAMETER["Standard_Parallel_2 ",-33.0],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]

Il s'agit d'une projection pour l'Afrique du Sud, et aucun des résultats de http://www.prj2epsg.org/search ne semble pertinent. Je souhaite donc le définir comme une projection personnalisée dans PostGIS. Autant que je sache, je ne peux pas utiliser WKT pour cela et j'ai besoin que les paramètres soient exprimés dans proj4. J'ai essayé de l'exécuter via ce script python vu ici:

#!/usr/bin/env python import osr import sys def main(prj_file): prj_text = open(prj_file, 'r').read() srs = osr.SpatialReference() if srs.ImportFromWkt(prj_text): augmente ValueError ("Erreur lors de l'importation des informations PRJ depuis : %s" % prj_file) print srs.ExportToProj4() #print srs.ExportToWkt() if __name__=="__main__": main(sys.argv[1])

et j'ai obtenu ceci :

ERREUR 6 : Aucune traduction pour Albers au format PROJ.4 n'est connue.

Maintenant, je ne sais pas comment procéder. J'aimerais également avoir la confirmation que mon raisonnement sur tout ce que j'ai mentionné est sensé.


1) Vous semblez avoir un mélange de projections dans vos fichiers d'origine (formes), alors, comment chargez-vous les fichiers sur Postgis ? Plus précisément, quelle projection transmettez-vous en paramètre à shp2pgsql ? Parce que si je me souviens bien, si vous ne spécifiez pas de srid, Postgis suppose qu'il s'agit de coordonnées locales (srid 0) et d'unités planaires, ce qui explique peut-être pourquoi vous voyez vos couches dans les colonnes géométriques (unités projetées).

2) ST_GeomFromText sans argument srid (la variante que vous utilisez) renvoie une géométrie sans référence spatiale, vous ne pouvez donc pas vous attendre à des calculs de distance significatifs en utilisant cette variante. Il serait préférable d'utiliser ST_GeomFromText(geom,srid) puis d'opérer sur une projection spécifique.

3) Il n'est pas vraiment difficile de mettre à jour la table de référence spatiale dans postgis et la liste des systèmes de référence pris en charge dans proj.4 (celui que gdal utilise) pour inclure la projection que vous utilisez : Pour postgis : http://postgis. refractions.net/documentation/manual-1.4/ch04.html#spatial_ref_sys Pour gdal : http://www.gdal.org/osr_tutorial.html

En résumé, vous devez vous assurer que vos couches ont une référence spatiale (correcte) dans Postgis, puis utiliser cette référence spatiale pour calculer la distance et créer des points à partir du texte. Ça ne ferait pas de mal de faire un peu de lecture dans les projections et les transformations.

*modifier le mauvais lien


Des informations sur la création de projections sont disponibles ici sur le site Esri. Voir la partie sur la création manuelle en bas de la page.

Il y a une excellente discussion sur ShapeFile Projections et PostGis ici et un exemple du SQL pour insérer la projection personnalisée dans PostGis peut être vu ici

Le SQL pour insérer la Custom Projection est probablement le plus intéressant pour vous…


Il y a un bug dans gdal. Vous devez changer "Albers" en "Albers_Conic_Equal_Area" dans votre WKT, puis vous pouvez utiliser n'importe quel outil que vous utilisez pour créer le proj4.


J'ai créé un prototype de page de cartographie Web pour démontrer les fonctionnalités intéressantes d'OpenLayers 3.0 alpha.

Notre site Web comportera une bibliothèque de cartes de paléo-biodiversité pour fournir contexte historique à nos conclusions, soulignant le degré actuel de perte de biodiversité. Pour l'instant, je décris mes efforts passés dans la création de ce site Web.

Comme c'est le cas depuis des siècles, l'un des outils les plus efficaces pour communiquer des informations géographiques est une belle carte informative. Au cours des dernières décennies, l'édition cartographique est passée de l'imprimerie à Internet.

Afin d'apprendre l'art et la science de la cartographie Web, j'ai dû gravir de nombreuses montagnes, ne sachant pas à l'avance laquelle d'entre elles conduirait à un ensemble optimal d'éléments à partir desquels je pourrais composer le cadre de notre site de partage de données et de cartographie sur la biodiversité. .

Les technologies logicielles open source et les exemples que j'ai explorés pour créer notre système logiciel incluent :

  • Programmes SIG &mdash Quantum GIS, uDig
  • Programmation Web &mdash HTML, CSS, JavaScript
  • Langages de programmation clés & mdash Objective-C, Python, Java, R
  • Formats de données raster &mdash NetCDF, HDF5
  • Systèmes de gestion de base de données &mdash PostGIS, PostgreSQL, SciDB, rasdaman, SpatiaLite
  • Interfaces graphiques de base de données &mdash pgAdmin3
  • Serveurs cartographiques &mdash GeoServer, MapServer
  • Frameworks de cartographie Web côté client &mdash OpenLayers, Heron, TileMill
  • Outils de développement d'applications mobiles (iOS) et mdash Xcode
  • Éditeurs de développement de code &mdash Komodo, KompoZer, BlueGriffon, Coda, Aptana Studio
  • Piles intégrées & mdash OpenGeo Suite, BitNami Stacks, MAMP
  • Packages statistiques &mdash R, RStudio
  • Logiciel serveur &mdash OS X Server, Apache
  • Systèmes et frameworks de gestion de contenu &mdash Django, Drupal, Joomla

Traiter les projections personnalisées (à partir du fichier prj) dans PostGIS (également GeoServer et OpenLayers) - Systèmes d'information géographique

Vous consultez actuellement une version archivée de Topic Web Mapping . Si des mises à jour ou des révisions ont été publiées, vous pouvez les trouver sur Web Mapping .

À mesure que l'utilisation d'Internet s'est développée, de nombreuses cartes papier ont été numérisées et publiées en ligne, et de nouvelles cartes ont de plus en plus été conçues pour être visualisées dans un navigateur Web ou une application mobile. Les cartes Web peuvent être statiques ou dynamiques, et les cartes dynamiques peuvent être animées ou interactives. Les cartes Web en mosaïque sont des cartes interactives qui utilisent des images en mosaïque pour permettre un chargement rapide des données et une interaction fluide, tandis que les cartes Web vectorielles prennent en charge le rendu d'une grande variété de conceptions de cartes sur le client. Les cartes Web suivent une architecture client-serveur, avec des serveurs de cartes spécialisés parfois utilisés pour publier des données et des cartes en tant que services Web géospatiaux. Les cartes Web sont composées de données provenant d'une base de données ou d'un fichier sur le serveur, d'informations de style affichées sur le serveur ou le client et, éventuellement, d'instructions d'animation ou d'interaction exécutées sur le client. Plusieurs plates-formes Web graphiques offrent des solutions de cartographie Web conviviales, tandis qu'une plus grande personnalisation est possible grâce à l'utilisation d'API de cartographie Web commerciales ou open source. Lors de la conception de cartes Web, les cartographes doivent considérer l'objectif de la carte sur un continuum allant d'exploratoire et hautement interactif à thématique et moins interactif ou statique, les contraintes des contextes Web de bureau et/ou mobile, et l'accessibilité pour les utilisateurs handicapés, âgés et mal connectés.

Sac, C. (2017). Cartographie Web. Le corpus de connaissances des sciences de l'information géographique et de la technologie (Édition du 4e trimestre 2017), John P. Wilson (éd.). DOI : 10.22224/gistbok/2017.4.11.

Cette entrée a été publiée le 6 décembre 2017.

Cette rubrique est également disponible dans les éditions suivantes : DiBiase, D., et al. (2006). Cartographie Web et visualisations. Le corpus de connaissances en sciences de l'information géographique et en technologie. Washington, DC : Association des géographes américains. (2e trimestre 2016, premier numérique).

Carte Web: carte publiée et accessible via Internet, généralement dans le cadre d'une page Web. Les cartes Web appartiennent à l'une des deux catégories suivantes :

Cartes Web statiques sont des images cartographiques rendues dans le navigateur qui ne changent pas en fonction de l'entrée de l'utilisateur. Il s'agit notamment d'images cartographiques dont l'utilisateur peut augmenter ou diminuer l'échelle via la fonctionnalité de zoom dans le navigateur sans modifier l'image elle-même.

Cartes Web dynamiques sont des cartes Web qui changent d'apparence au fur et à mesure qu'elles sont visualisées par l'utilisateur. Il existe deux sous-types de cartes dynamiques :

Cartes Web animéeschanger fréquemment et automatiquement, en utilisant le temps pour représenter un ou plusieurs attributs de données. Les cartes animées peuvent inclure ou non de l'interactivité, mais incluent souvent au moins des commandes permettant à l'utilisateur de mettre en pause, de lire et d'ajuster le point de départ de l'animation.

Cartes Web interactives changement en réponse à l'entrée de l'utilisateur. En raison de l'omniprésence de ce type de carte sur Internet aujourd'hui, de nombreuses personnes pensent avec désinvolture que les « cartes Web » sont synonymes de cartes Web interactives.

Carte Web en mosaïque (carte glissante) : Une carte Web interactive qui utilise des vignettes d'images ou de données envoyées au navigateur de l'utilisateur à la demande, permettant un zoom et un panoramique fluides et ininterrompus.

Écraser: combinaison d'un ensemble de tuiles de carte avec une ou plusieurs superpositions de données provenant d'une ou de plusieurs sources différentes de l'ensemble de tuiles.

Interface de programmation d'applications (API): ensemble d'instructions que les programmes utilisent pour communiquer entre eux, souvent publiées dans une documentation en ligne lisible par l'homme.

API de cartographie Web commerciale: Une bibliothèque d'instructions de code qui est principalement ou exclusivement utile pour accéder à un service de cartographie Web propriétaire.

API de cartographie Web open source: Une bibliothèque d'instructions de code qui n'est pas conçue pour un service spécifique et que tout développeur peut librement modifier pour l'adapter à ses besoins.

Application Internet riche (applet): Une application tierce conçue pour compiler et exécuter des programmes binaires dans le navigateur. Les applications Internet riches disparaissent rapidement au profit des technologies Web ouvertes.

Architecture client-serveur: Un système permettant aux ordinateurs de communiquer entre eux à travers un réseau, dans lequel un programme informatique (le serveur) stocke et fournit du contenu à un programme récepteur (le client).

Serveur: un logiciel installé sur un ordinateur ou un groupe d'ordinateurs qui envoie des informations stockées sur la machine locale à un périphérique distant.

Client: élément logiciel installé sur un ordinateur qui envoie des requêtes à un serveur et reçoit des informations d'un serveur.

Modèle d'objet de document (DOM): ensemble d'éléments, d'attributs, de styles, de données et d'objets et de procédures de script utilisés pour afficher une page Web dans le navigateur.

Serveur de carte : Un serveur Web spécialisé utilisé pour publier des services Web géospatiaux.

Services Web géospatiaux: Données, images cartographiques et services de traitement mis à disposition en temps réel par un serveur cartographique, généralement conformes aux normes définies par l'Open Geospatial Consortium (OGC).

Tuiles vectorielles. De petits morceaux de données vectorielles couvrant chacun la zone géographique d'une seule tuile de carte livrée avec un ensemble séparé d'instructions de style qui est utilisé pour rendre chaque tuile dans le navigateur.

Animation d'arrêt sur image: Animation créée en affichant de nombreuses images individuelles (ou cadres) en succession rapide.

Interpolation: Une transition en douceur entre les états de la carte exécutée par programme (c'est-à-dire via le code).

Interaction:La conversation entre l'utilisateur et la carte médiée par le client.

Interface utilisateur (UI): L'ensemble des éléments de la page que l'utilisateur peut voir et/ou manipuler.

AJAX (Javascript et Xml asynchrones: ensemble de procédures qui permet à un client d'envoyer des requêtes à un serveur et de recevoir des données en réponse à une entrée utilisateur sans avoir à recharger toute la page Web.

Hiérarchie visuelle: La dominance visuelle relative des objets sur une carte, les objets les plus importants étant plus visuellement dominants.

Hiérarchie visuelle forte: Les objets sur la carte contrastent nettement et ont un ordre d'importance très reconnaissable.

Hiérarchie visuelle faible/plate: Les objets sur la carte sont visuellement comparables et difficiles à classer en termes d'importance relative.

Conception excessive: L'inclusion de trop d'informations, trop d'éléments visuels ou trop d'interactivité compte tenu de l'objectif de la carte, ce qui entraîne un encombrement et une facilité d'utilisation réduite.

Disposition de la carte: disposition visuelle des éléments de l'interface utilisateur (UI) sur et autour d'une carte Web.

Composition de la carte: La manière dont les cartes Web sont structurées visuellement pour communiquer certaines informations à l'utilisateur.

Site Web adaptatif: Un ensemble de techniques pour modifier la mise en page du contenu de la page Web pour se conformer à la taille d'affichage et au contexte de l'utilisateur.

Accessibilité: Le principe de s'assurer que les personnes handicapées, âgées ou vivant dans des zones rurales ou des pays en développement peuvent utiliser des sites Web et des applications Web.

2.1 Cartes Web statiques ou dynamiques

Les premières cartes Web étaient des cartes imprimées qui étaient simplement numérisées et publiées sur Internet dès 1993, lorsque l'introduction du navigateur Web Mosaic a permis aux premiers utilisateurs d'Internet de visualiser des images pour la première fois (Peterson, 2008). Les images de carte numérisées sont encore un type courant de carte Web. Elles sont souvent fournies sous forme de documents Adobe PDF ou placées dans un cadre de visualisation qui permet à l'utilisateur de zoomer pour afficher des parties de la carte plus en détail (Peterson, 2014). Ces dernières années, cependant, une attention croissante a été accordée aux contraintes de conception des écrans d'ordinateur et des navigateurs Web, et il existe maintenant une multitude de directives de conception pour les cartes numériques qui s'écartent de celles des cartes imprimées (par exemple, Jenny et al., 2008 Muehlenhaus, 2014 Tolochko, 2016). Qu'elle soit d'abord imprimée puis numérisée, ou créée sur un ordinateur pour une consommation numérique, une carte Web qui ne change pas d'apparence est classée comme un carte web statique(Figure 1).

Figure 1 : Une partie d'une carte statique formatée pour le Web. La carte complète est très longue (1097x8032 pixels) pour faciliter le défilement vertical sur une page web. Carte de Gregor Aisch et K.K. Rebecca Lai, du New York Times, dernière mise à jour le 7 février 2017. Réimprimé avec permission.

Le développement de cartes Web dynamiques a eu lieu parallèlement à la prolifération de cartes Web statiques. Cartes Web dynamiques changer leur apparence, soit fréquemment et automatiquement pour montrer un changement dans un phénomène (cartes web animées Figure 2) ou arbitrairement en réponse à la saisie de l'utilisateur (cartes Web interactives) (Roth, 2013). Le site Web Map Viewer, développé en 1994, permettait à l'utilisateur de demander une carte unique centrée sur un point spécifique (Peterson, 2014). En 1996, MapQuest a introduit une carte sur laquelle les utilisateurs pouvaient effectuer un zoom avant et arrière et un panoramique d'un côté à l'autre, chaque demande chargeant une nouvelle page Web avec la nouvelle vue cartographique. Environ une décennie plus tard, MapQuest a été éclipsé par Google, qui a introduit la carte Web en mosaïque en 2005.

Figure 2 : Une carte Web animée des trajectoires de vol prises par les avions de surveillance du gouvernement. La carte originale fournit également quelques interactions. Carte par Peter Aldhous, de Actualités BuzzFeed, 6 avril 2016. Réimprimé avec permission.

2.2 Cartes Web en mosaïque et mashups

Cartes Web en mosaïque, également appelé cartes glissantes, permettre un panoramique et un zoom ininterrompus en découpant les données ou l'image de la carte en tuiles de 256 par 256 pixels et en envoyant des tuiles au navigateur de l'utilisateur lorsque le navigateur le demande (Peterson, 2012 Figure 3). Ces demandes en direct sont effectuées via AJAX (JavaScript et XML asynchrones), un ensemble de routines de calcul qui permet au client d'obtenir des données du serveur sans recharger la page Web, ce qui rend l'interaction avec la carte fluide et intuitive. Les cartes en mosaïque restent parmi les types de cartes Web les plus populaires.

Figure 3. Une tuile de carte d'OpenStreetMap, une carte de référence en mosaïque composée de données provenant de centaines de milliers de contributeurs.

Parallèlement aux cartes Web en mosaïque, Google a inventé et standardisé la projection Web Mercator (ou Spherical Mercator), qui est toujours utilisée par presque tous les jeux de tuiles. Cette projection est utile en raison de sa simplicité de calcul, de sa rectangulaire (permettant à la carte d'être continue d'est en ouest) et de sa conformité, qui réduit la distorsion de forme à grande échelle (Muehlenhaus, 2014). Cependant, il est également moins précis que les projections ellipsoïdales, et il déforme considérablement les zones de haute latitude à l'échelle mondiale, ce qui soulève des inquiétudes quant à son impact sur la façon dont les gens imaginent la forme de la planète et interprètent les données spatiales (Battersby et al., 2014).

L'avènement de la carte Web en mosaïque a été suivi de peu par le premier écraser. En procédant à la rétro-ingénierie du site Web de Google Maps, les « pirates de carte » ont découvert comment placer des données provenant d'ailleurs sur les mosaïques d'images de Google (Crampton, 2010). Google a répondu en publiant ouvertement son interface de programmation d'applications (API), un ensemble d'instructions que les programmes utilisent pour communiquer entre eux (Muehlenhaus, 2014). Alors qu'OpenLayers a rapidement été développé comme une alternative non commerciale, l'API Google Maps est restée le générateur de mashup le plus utilisé jusqu'à ce que Google commence à limiter son utilisation non rémunérée en 2011. À ce stade, les alternatives open source ont rapidement gagné en popularité.

2.3 Applications Internet riches et cartes Web vectorielles

Avant l'avènement des cartes Web en mosaïque, les cartographes qui recherchaient une animation et une interaction fluides ont commencé à créer des cartes en utilisant applications Internet riches, ou des applications binaires tierces intégrées dans le navigateur en tant qu'extension (souvent appelée applet). Le plus courant d'entre eux pour la cartographie était Flash, développé par Macromedia en 1997 et acheté plus tard par Adobe (Peterson, 2008). En téléchargeant et en compilant en tant que package exécutable unique, les programmes construits avec Flash pourraient surmonter les limitations de bande passante des modems 56K pour offrir une expérience utilisateur fluide avec un rendu de haute qualité des graphiques personnalisés (Roth et al., 2014). Les cartes Flash étaient courantes jusqu'au début des années 2010, lorsque les fabricants de systèmes d'exploitation mobiles ont annoncé qu'ils ne prendraient plus en charge les applications tierces dans les navigateurs mobiles, et que la communauté de développement Web s'est tournée vers les technologies Web ouvertes mises en œuvre nativement par les navigateurs (Adobe 2015).

Au fur et à mesure que les applets ont disparu, les cartographes se sont tournés vers les cartes Web en mosaïque et ont commencé à rechercher des alternatives qui ne reposaient pas sur les jeux de tuiles Web Mercator. La norme SVG (Scalable Vector Graphics) offrait un moyen de dessiner et de styliser des cartes qui pouvaient toujours être dynamiques et interactives directement dans le navigateur. Bien que son adoption par certains navigateurs ait pris plusieurs années et que sa vitesse de rendu ait été initialement médiocre, SVG est désormais pris en charge par tous les principaux navigateurs, et des bandes passantes et des processeurs graphiques améliorés ont rendu son expérience utilisateur compétitive avec celle de la carte Web en mosaïque (Peterson, 2008) . Le nouvel élément HTML Canvas prend en charge un rendu plus rapide du dessin au trait vectoriel, mais traite le graphique comme une image raster une fois rendu (Lienert et al., 2012). Des scènes d'interaction et 3D peuvent être ajoutées à Canvas à l'aide de WebGL, une API JavaScript qui utilise le processeur graphique de l'ordinateur pour accélérer davantage le rendu (Caballero, 2011).

Figure 4. Une carte Web vectorielle interactive permettant d'explorer les journaux de bord historiques des capitaines de navires. Carte de Scott Farley, Starr Moss et Meghan Kelly. Réimprimé avec permission.

3.1 Architecture client-serveur

Comme tout contenu Web, les cartes Web suivent un architecture client-serveur modèle (Peterson, 2014). Le serveur est un logiciel installé sur un ordinateur ou un groupe d'ordinateurs qui envoie des informations stockées sur la machine locale à un périphérique distant, ou client. Le serveur reçoit également des demandes et des données du client, effectue des calculs et écrit des données dans le stockage sur sa machine. Chaque serveur a sa propre adresse IP statique (Internet Protocol), une chaîne de chiffres par laquelle le client le localise. Le client (un navigateur ou une application stockée sur l'appareil de l'utilisateur) demande les informations stockées sur la machine du serveur en appelant l'adresse IP du serveur (généralement acheminée via une adresse de serveur de nom de domaine (DNS), par exemple, www-dot -exemple-point-com). Le serveur renvoie au client les documents HTML, les feuilles de style CSS, les instructions du programme JavaScript et d'autres données et images nécessaires stockées dans le répertoire du site Web. Le client compile ensuite ces données et instructions dans la page Web consultée par l'utilisateur.

Le mot « serveur » est devenu un raccourci pour un ordinateur haute puissance, souvent situé dans un centre de données avec des centaines d'autres machines similaires (Peterson, 2014). Plus précisément, un serveur est un logiciel qui peut être situé sur n'importe quel ordinateur, même un PC domestique ou un ordinateur portable, qui rend le contenu d'un certain répertoire sur cet ordinateur visible sur un réseau. Les serveurs les plus populaires actuellement sont Apache, NGINX, Google Web Server et IIS de Microsoft (Netcraft, 2017).

Côté client, le navigateur restitue les pages et exécute les programmes qui lui sont envoyés à l'aide du Modèle d'objet de document (DOM), qui organise tous les éléments, attributs, styles, données et objets de script et procédures nécessaires pour afficher la page Web (Sack et Roth, 2017). En plus de l'ensemble actuel de navigateurs Web complets (Firefox, Chrome, Internet Explorer/Edge, Safari et Opera), les cartes Web sont de plus en plus affichées sur des appareils mobiles à l'aide d'applications développées pour accéder à un service Internet particulier. Google Maps et Apple Maps sont les applications cartographiques les plus connues, mais il y en a beaucoup d'autres, et les cartographes ayant des compétences de base en codage peuvent créer leurs propres applications pour la distribution via les magasins d'applications des fabricants de systèmes d'exploitation (Muehlenhaus, 2014).

Les ingrédients de base d'une carte Web sont Les données, représentationdes données à l'aide des informations de style et, s'il s'agit d'une carte dynamique, animationou alors interaction(Donohue, 2014). Chacun sera couvert à tour de rôle ci-dessous.

Les données sont hébergées sur la machine du serveur. Les données vectorielles utilisées pour le rendu dynamique des cartes Web sont souvent stockées dans une base de données. Les systèmes de gestion de bases de données les plus courants utilisés pour le Web (MySQL, PostgreSQL, Microsoft SQL et Oracle) ont tous des extensions géospatiales qui permettent le stockage de données vectorielles géographiques, ainsi qu'une capacité variable à effectuer un géotraitement côté serveur avec les données. (Lienert et al., 2012). Les données vectorielles peuvent également être stockées dans un fichier sur le serveur ou converties d'une base de données en un format de fichier pour la transmission. Il est important de noter que les données vectorielles utilisées dans les cartes Web ne ne pas inclure des informations de projection, car la plupart des API de cartographie Web projettent les données dans l'application cliente, et les données pré-projetées peuvent générer des résultats incompréhensibles.

Les images de carte raster (y compris les tuiles raster) sont presque toujours stockées sous forme de fichiers individuels dans une structure de répertoire simple. Le tableau 1 répertorie les formats de fichiers vectoriels et raster courants pour le Web (voir aussi Formats et sources raster et Formats vectoriels et sources).

L'aspect représentation d'une carte Web est la façon dont les informations cartographiées sont vues et interprétées par l'utilisateur (Donohue, 2014). Cela implique l'application d'informations de style aux données pour restituer une image cartographique visible. Ce rendu peut avoir lieu côté serveur ou côté client.

Dans le cas d'images de carte raster, les informations de style sont incluses dans l'image fournie par le serveur. Les images cartographiques peuvent être soit des fichiers préexistants, soit rendues par un serveur de carteen utilisant une feuille de style Styled Layer Descriptor (SLD) (Lienert et al., 2012). Les serveurs de cartes peuvent être configurés pour restituer les images à la volée à la demande du client, ou restituer chaque image une fois et la stocker dans un cache côté serveur. Les ensembles de tuiles raster pour les cartes tuilées sont généralement créés à l'aide de cette dernière approche. MapServer, Geoserver et QGIS Server sont des serveurs de cartes open source populaires, tandis qu'ArcGIS Server est le serveur de cartes commercial le plus utilisé.

Les serveurs de cartes publient des données et des images services web géospatiaux. L'Open Geospatial Consortium (OGC) maintient un ensemble de normes pour les services Web géospatiaux, répertoriés dans le tableau 2 avec le nom de chaque service lié à sa documentation sur le site Web de l'OGC. Ces normes permettent aux clients d'interroger les données et les opérations du serveur cartographique pour produire un résultat personnalisé, et elles se mettent immédiatement à jour avec les modifications apportées aux données sous-jacentes, permettant une représentation cartographique en temps réel des phénomènes changeants (Cerba et Cepicky, 2012).

Tableau 2. Services Web géospatiaux de l'OGC.

Pour les cartes vectorielles statiques et dynamiques, les informations de style sont transmises séparément des données et rendues par le client. Dans le cas des graphiques SVG, les informations de style peuvent être incluses dans le fichier SVG, ou appliquées par des instructions séparées écrites en CSS ou JavaScript, ou une combinaison (Muehlenhaus, 2014). Un SVG peut également être construit à partir de zéro sur le client en utilisant des sources de données et des instructions distinctes dans le code JavaScript, comme le sont toutes les cartes dessinées à l'aide de Canvas (Lienert et al., 2012). Les cartes en mosaïque peuvent utiliser tuiles vectorielles, qui se composent de nombreux petits morceaux de données couvrant la zone géographique d'une seule tuile et d'un ensemble distinct d'instructions de style qui est utilisé pour rendre chaque tuile dans le navigateur (Turner, 2015).

3.4 Animation et interaction

Le dernier composant d'une carte Web dynamique est l'animation ou les interactions de la carte., qui sont exécutés côté client. Il existe deux types de base de cartes Web animées (Muehlenhaus, 2014). Animation d'arrêt sur imageest fourni via un fichier image vidéo ou GIF, composé de nombreuses images individuelles (ou cadres) qui apparaissent en succession rapide. Les données de séries chronologiques utilisent généralement ce type d'animation. Interpolation, ou une transition en douceur entre deux états de la carte, est créée par des instructions de programme en code SVG ou JavaScript et est utile pour afficher des données spatio-temporelles continues (voir Mapping Time).

Interaction est la conversation entre l'utilisateur et la carte médiatisée par le client (Roth, 2012). Avec la disparition des applications Internet riches référencées dans la section 1, presque toutes les interactions de carte Web sont implémentées à l'aide de JavaScript, le langage de programmation du Web (Peterson, 2014). L'entrée de l'utilisateur est collectée via le interface utilisateur (UI), l'ensemble des éléments de la page que l'utilisateur peut voir et/ou manipuler, et est interprété par le script pour générer un changement dans l'état de la carte (voir Interface utilisateur et conception de l'expérience utilisateur).

Les cartes Web en mosaïque créent une interaction de carte fluide grâce à l'utilisation d'AJAX (voir la section 1.2). Alors qu'AJAX a révolutionné la façon dont les pages Web sont programmées, son inconvénient majeur est l'exigence d'une connectivité réseau continue, rendant la plupart des cartes Web en mosaïque inutilisables lorsque le service Internet est inégal ou indisponible (Tsou, 2011).

3.5 Plateformes et API de cartographie Web

Les applications Web de plus en plus conviviales et basées sur le cloud ont mis la cartographie Web à la portée des novices techniques (Muehlenhaus, 2014). Ces services permettent aux utilisateurs d'ajouter des données à des cartes de base préexistantes, de styliser les données, d'ajouter des composants interactifs et d'héberger le produit final pour un partage direct ou une intégration dans une page Web. Plusieurs services de cartographie Web populaires sont répertoriés dans le tableau 3.

Tableau 3. Applications cartographiques Web graphiques basées sur le cloud
Application Web La description
Mapbox Studio Styles et héberge des ensembles de tuiles vectorielles personnalisées à l'aide d'OpenStreetMap et des ensembles de données importés par l'utilisateur.
Constructeur CARTO Héberge les données géospatiales dans la base de données PostgreSQL/PostGIS, cartographie les données sur un large éventail de jeux de tuiles, stylise les couches de données, crée des visualisations, permet des requêtes de données et effectue une analyse spatiale.
Google Mes cartes Permet de dessiner ou d'ajouter des couches de données sur les jeux de tuiles Google et fournit un style de données limité.
Tableaux de fusion Google Les géoréférences et les cartes de données tabulaires sur les jeux de tuiles Google, permettent un style de données limité et créent des visualisations.
Visionneuse de cartes ArcGIS Online d'Esri Permet de dessiner ou d'ajouter et de styliser des couches de données sur ESRI et des ensembles de tuiles sous licence ouverte. Permet l'analyse spatiale et l'accès à des ensembles de données organisés avec un abonnement d'entreprise.

Les cartographes plus avancés qui souhaitent personnaliser la représentation et l'interface utilisateur d'une carte Web peuvent le faire côté client à l'aide d'une API JavaScript (Application Programming Interface voir Section 2) (Peterson, 2014). API commerciales puiser dans des services cartographiques propriétaires, tout en API open source n'ont pas de service parental spécifique (Roth et al., 2014). Les deux consistent en des bibliothèques de code qui fournissent des méthodes pour simplifier l'utilisation du DOM pour créer des cartes Web. Les API populaires sont répertoriées dans le tableau 4.

Tableau 4. API de cartographie Web
API La description
API Google Maps Permet d'accéder aux ensembles de tuiles et aux services Google Maps.
Contrôle des cartes Bing Permet d'accéder aux ensembles de tuiles et aux services Bing Maps.
ICI Maps API Donne accès aux ensembles de tuiles et aux services HERE Maps.
API ArcGIS Permet les mashups, l'analyse spatiale et la visualisation des jeux de tuiles Esri.
CARTO.js Donne accès aux données et à la visualisation stockées sur CARTO.
Mapbox GL JS Rend les tuiles vectorielles Mapbox avec les commandes et les interactions de l'interface utilisateur.
Mapzen Tangram Rend les tuiles vectorielles Mapzen, en utilisant Leaflet pour les contrôles et les interactions.
OpenLayers Bibliothèque open source robuste pour les mashups de cartes tuilées sur tous les jeux de tuiles.
Brochure Bibliothèque open source légère pour les mashups de cartes tuilées sur tous les jeux de tuiles.
D3 Bibliothèque open source pour la cartographie vectorielle dynamique et la visualisation des données.

Le but de cette section est de décrire les contraintes de conception uniques des cartes Web sans ressasser les principes cartographiques présentés dans d'autres sujets de CV, qui restent pertinents pour les cartes Web.

En suivant le diagramme Swoopy (DiBiase, 1990 voir Cartographie et technologie), les cartes Web peuvent être placées le long d'un continuum allant du très exploratoire au très thématique (Figure 5 voir Interface utilisateur et conception de l'expérience utilisateur (UI/UX)).

Figure 5. Le continuum de la carte Web.

Hiérarchie visuelleest la dominance visuelle relative des objets sur la carte, de sorte que les objets les plus importants sont plus visuellement dominants (Dent, 1990). Because they display many features that may be of interest, more exploratory web maps should have a flatter visual hierarchy to allow users greater freedom to draw their own conclusions. They should also allow for more interaction to enable the user to create more unique map views (MacEachren, 1994). By contrast, thematic maps should have a strong visual hierarchy and few if any interactions to keep the user’s focus on the key information being presented (Figure 6).

Figure 6. The National Map download tool (top) provides a large amount of data for exploration, includes many possible interactions, and symbolizes map layers to create a flattened visual hierarchy. In contrast, the thematic New York Times map shown in Figure 1 (bottom) contains no interaction and highlights important information with bold symbolization, labels, and callouts atop a washed-out base map, creating a strong visual hierarchy.

Web maps should avoid overdesign. To maximize its clarity and usability, a web map should only include the information, map elements, and interactions necessary to accomplish the map’s purpose (Tolochko, 2016).

Web map elements should have a consistent look across the base map, data, and user interface layers of the map, and fit with the overall page or app design (Tolochko, 2016). The sizes and resolutions of device screens vary widely and affect how web maps appear to the user (Muehlenhaus, 2014). A web map should adjust its layout dynamically to fit the available display space of any device it is intended for use on, following the strategies of responsive web conception (Jenny et al., 2008 Marcotte, 2011). Additionally, different browsers and operating systems have slight differences in how they display web pages, so web maps should be tested on several different platforms before release. Table 5 presents a summary of map-based UI elements and common implementation schemes.

Table 5. Web map elements based on descriptions in Muehlenhaus (2014) and Tolochko (2016).
Map Element Web map implementation(s)
Map title Page header or temporary splash screen.
Map area May be dynamically adjusted through panning/zooming, changes to screen size, and device orientation.
Base map Provides geographic context. Use muted colors in thematic web maps to create strong visual hierarchy (Figure 5). Including a satellite imagery layer is appropriate for exploratory and reference web maps, but distracting in thematic maps.
Data layers Exploratory maps include many data layers with a flatter visual hierarchy thematic web maps include a few styled to stand out against base map (Figure 6). Point symbols should be highly iconic so they can be distinguished when small. Thematic layers should be easy to interpret and avoid possible hidden meanings (see Common Thematic Map Types).
Map scale May be displayed through a scale bar that changes dynamically if the map can be zoomed or panned. Do not display a ratio scale, as absolute scale changes with display size and projection centering.
Supplemental information Embedded text, links, images, graphics, and videos that may be presented as information windows, tooltips atop the map, and/or elsewhere on the web page. Provides a point of entry for the map user.
Étiquettes Quantity and size of labels can change at different zoom levels. Labels should be large enough for pixel densities of intended users’ displays and use sans-serif, common web fonts.
Inset/Locator map If included in an interactive map, changes dynamically to match the current view.
Map metadata At minimum, include the cartographer(s)’ name(s), data sources, and license information. It can be shown in small font directly on or below the map or made easily available in a splash screen or on a linked webpage.
North arrow Do not include in a static web map oriented with north up. If a web map can rotate, it should include an arrow that also rotates dynamically.
Neat lines / frame lines Not included if map takes up the full size of the screen or is well-integrated with the rest of the page content.
Supplemental graphs Graphs or charts may be linked to a thematic map through simultaneous highlighting or brushing.
Legend For dynamic maps, may update dynamically or allow interactions that affect the map.
Menus May be included to provide the map user with additional options and interactions.
Aider May be provided as a link or tutorial pop-ups to orient the user to the map.
Animation controls May be included to give the user control over playback. They should integrate a temporal legend. Keep animations short and simple (see Mapping Time).
Interaction controls Should be included to facilitate interactions or when mouse/touch/ keyboard interactions are not immediately obvious. They should provide feedback to the user when activated (see User Experience and User Experience (UIUX) Design). On highly interactive maps, include a mechanism to reset the default view and parameters. Avoid interactions that interfere with web page scrolling.

Accessibilitéfor the web means that people who have disabilities, are older, or live in rural areas or developing countries can use websites and web applications (W3C, 2016). Web maps should follow the Web Content Accessibility Guidelines published by the World Wide Web Consortium (W3C) to the greatest extent possible. For example, web maps can provide alt tags for images to be read by screen readers, use proper heading levels for titles, and allow keyboard input options for interactions. Styling should take colorblind users into account. Interactive web maps that rely on newer technologies or those with large datasets should provide alternative versions that can be viewed with slower connection speeds and older, non-conforming browsers (Tolochko, 2016).

Adobe Corporate Communications. (2015, November 30). Flash, HTML5 and open web standards [Blog]. Retrieved March 10, 2017, from https://blogs.adobe.com/conversations/2015/11/flash-html5-and-open-web-standards.html

Battersby, S. E., Finn, M. P., Usery, E. L., & Yamamoto, K. H. (2014). Implications of Web Mercator and Its Use in Online Mapping. Cartographica: The International Journal for Geographic Information and Geovisualization, 49(2), 85–101. DOI: 10.3138/carto.49.2.2313

Bostock, M., & Davies, J. (2013). Code as Cartography. The Cartographic Journal, 50(2), 129–135. DOI:10.1179/0008704113Z.00000000078

Caballero, L. (2011, October 13). An Introduction to WebGL - Part 1. Retrieved from https://dev.opera.com/articles/introduction-to-webgl-part-1/

Cerba, O., & Cepicky, J. (2012). Web Services for Thematic Maps. In M. P. Peterson (Ed.), Online Maps with APIs and WebServices (pp. 141–155). Berlin, Heidelberg: Springer.

Crampton, J. (2010). Mapping: A Critical Introduction to Cartography and GIS. Chichester, UK: Wiley-Blackwell.

Dent, B. D. (1990). Cartography: thematic map design (2nd ed). Dubuque, IA: W.C. Brown.

DiBiase, D. (1990). Visualization in the Earth Sciences. Earth and Mineral Sciences, 59(2). Retrieved from http://www.geovista.psu.edu/publications/others/dibiase90/swoopy.html

Donohue, R. G. (2014). Web Cartography with Web Standards: Teaching, Learning, and Using Open Source Web Mapping Technologies (Dissertation). University of Wisconsin-Madison, Madison, WI.

Jenny, B., Jenny, H., & Räber, S. (2008). Map design for the Internet. In M. P. Peterson (Ed.), International Perspectives on Maps and the Internet (pp. 31–48). Berlin-Heidelberg: Springer.

Lienert, C., Jenny, B., Schnabel, O., & Hurni, L. (2012). Current Trends in Vector-Based Internet Mapping: A Technical Review. In M. P. Peterson (Ed.), Online Maps with APIs and Web Services (pp. 23–36). Berlin-Heidelberg: Springer.

MacEachren, A. M. (1994). Visualization in modern cartography: Setting the Agenda. In A. M. MacEachren & D. R. F. Taylor (Eds.), Visualization in Modern Cartography (pp. 1–12). Oxford, England: Pergamon.

Muehlenhaus, I. (2014). Web cartography: map design for interactive and mobile devices. Boca Raton, FL: CRC Press.

Netcraft. (2017, February 27). February 2017 Web Server Survey. Retrieved June 2, 2017, from https://news.netcraft.com/archives/2017/02/27/february-2017-web-server-survey.html

Peterson, M. P. (2008). International Perspectives on Maps and the Internet: An Introduction. In M. P. Peterson (Ed.), International Perspectives on Maps and the Internet (pp. 3–10). Berlin, Heidelberg: Springer.

Peterson, M. P. (2012). The Tile-Based Mapping Transition in Cartography. In L. Zentai & J. Reyes Nunez (Eds.), Maps for the Future: Children, Education and Internet (pp. 151–163). Berlin, Heidelberg: Springer.

Peterson, M. P. (2014). Mapping in the cloud. New York London: The Guilford Press.

Peterson, M. P., & International Cartographic Association (Eds.). (2003). Maps and the internet (1st ed). Amsterdam : London: Elsevier.

Roth, R. E. (2012). Cartographic Interaction Primitives: Framework and Synthesis. The Cartographic Journal, 49(4), 376–395.

Roth, R. E. (2013). Interactive maps: What we know and what we need to know. Journal of Spatial Information Science, (6). DOI:https://doi.org/10.5311/JOSIS.2013.6.105

Roth, R. E., Donohue, R. G., Sack, C. M., Wallace, T. R., & Buckingham, T. M. A. (2014). A Process for Keeping Pace with Evolving Web Mapping Technologies. Cartographic Perspectives, 0(78), 25–52. DOI: 10.14714/CP78.1273

Sack, C. M. (2013). Mapmaking for Change: Online Participatory Mapping Tools for Revealing Landscape Values in the Bad River Watershed (Master’s Thesis). University of Wisconsin-Madison, Madison, WI.

Sack, C. M., & Roth, R. E. (2017). Design and evaluation of an Open Web Platform cartography lab curriculum. Journal of Geography in Higher Education, 41(1), 1–23. DOI:10.1080/03098265.2016.1241987

Stefanakis, E., & Patroumpas, K. (2008). Google Earth and XML: Advanced Visualization and Publishing of Geographic Information. In M. P. Peterson (Ed.), International Perspectives on Maps and the Internet (pp. 143–152). Berlin, Heidelberg: Springer.

Tolochko, R. C. (2016). Contemporary Professional Practices in Interactive Web Map Design (Thesis). University of Wisconsin-Madison, Madison, WI.

Tsou, M.-H. (2011). Revisiting Web Cartography in the United States: the Rise of User-Centered Design. Cartography and Geographic Information Science, 38(3), 250–257. DOI: 10.1559/15230406382250


Web-Based GIS as a Tool for Supporting Marine Research

Collecting marine data during hydroacoustic research surveys is a complex task, which not only consists of measurements but also analysis, validation, and interpretation of information acquired by various sensors. Automatic integration, visualization, and processing of collected data allow for a more precise investigation of the researched phenomena. The paper presents a dedicated Web-based system for fusion and dissemination of data from satellite imagery, hydrological measurements using CTD probes, acoustic surveys by multibeam systems, side-scan sonars and singlebeam echosounders, as well as live radar feed and oil spill spread models. The system has been designed as a tool for supporting research using the aforementioned techniques.

Acknowledgements

The authors wish to thank Prof. Andrzej Orlowski from Sea Fisheries Institute in Gdynia, Poland, for his contribution of data on Baltic sediment methane ebullition quantification. The oil spill dispersion data used in the study were produced in the framework of the MARCOAST project, funded by ESA and coordinated by Thales Alenia Space, contract number: 136391. The new concept for visualization of oil spill simulation results was developed in the framework of Joint Polish-Greek R&T Programme 2005–2007 “Development of a monitoring and mapping system for marine pollution via a Web-based Geographical Information System.” HCMR was financially supported by the Greek General Secretariat for Research and Technology.

The authors would like to thank Gdansk Institute of Oceanology crew of Polish Academy of Sciences and Prof. Zygmunt Kluzek for collaboration and joint r/v Oceania cruises.

This research was supported by the European Union within the European Social Fund in the framework of the project “InnoDoktorant—Scholarships for PhD students, I edition.”


Hi,
with this mail I'm trying to summarize a few findings of mine
on how to deal with 3D vector data, and in particular with
the 2D+1 subset of it, in Geotools.

With 2D+1 data I mean the usual JTS geometry types, whose
coordinates do have a not null, nor NaN, Z component.
Expanding a bit that might also include the usual measured
geometries, so include the xyz, xym, xyzm cases that both
shapefiles and postgis do handle.

The main issues trying to deal with more dimension are
dealing the the CRS representation, the transformations,
and the envelopes.
The cleanest path seemed to have a real 3D CRS and thus
stick the information about the dimensionality in
the CRS itself.
CRS wise there are two kinds of 3D systems, 3d
geographic, like 4327, and compounds, that do take
a 2d crs and stick a vertical component onto it.
Here are two examples of them:

EPSG:4327, the 3d brother of 4326 (but unusable due to
its DMS unit of measure):
GEOGCS["WGS 84 (geographic 3D)",
DATUM["World Geodetic System 1984",
SPHEROID["WGS 84", 6378137.0, 298.257223563,
AUTHORITY["EPSG","7030"]],
AUTHORITY["EPSG","6326"]],
PRIMEM["Greenwich", 0.0, AUTHORITY["EPSG","8901"]],
UNIT["DMS", 0.00000484813681109536],
AXIS["Geodetic longitude", EAST],
AXIS["Geodetic latitude", NORTH],
AXIS["Ellipsoidal height", UP],
AUTHORITY["EPSG","4327"]]

EPSG:7401, a compound one:
COMPD_CS["NTF (Paris) / France II + NGF Lallemand",
PROJCS["NTF (Paris) / France II",
GEOGCS["NTF (Paris)",
DATUM["Nouvelle Triangulation Francaise (Paris)",
SPHEROID["Clarke 1880 (IGN)", 6378249.2, 293.4660212936269,
AUTHORITY["EPSG","7011"]],
AUTHORITY["EPSG","6807"]],
PRIMEM["Paris", 2.5969213, AUTHORITY["EPSG","8903"]],
UNIT["grade", 0.015707963267948967],
AXIS["Geodetic latitude", NORTH],
AXIS["Geodetic longitude", EAST],
AUTHORITY["EPSG","4807"]],
PROJECTION["Lambert Conic Conformal (1SP)", AUTHORITY["EPSG","9801"]],
PARAMETER["central_meridian", 0.0],
PARAMETER["latitude_of_origin", 52.0],
PARAMETER["scale_factor", 0.99987742],
PARAMETER["false_easting", 600000.0],
PARAMETER["false_northing", 2200000.0],
UNIT["m", 1.0],
AXIS["Easting", EAST],
AXIS["Northing", NORTH],
AUTHORITY["EPSG","27582"]],
VERT_CS["NGF Lallemand",
VERT_DATUM["Nivellement General de la France - Lallemand", 2005,
AUTHORITY["EPSG","5118"]],
UNIT["m", 1.0],
AXIS["Gravity-related height", UP],
AUTHORITY["EPSG","5719"]],
AUTHORITY["EPSG","7401"]]

So, the basic idea was to use a real 3D CRS and
have everything else learn how to handle it.
Unfortunately I've stumbled into a number of issues:
- all of our code uses ReferencedEnvelope, which is
limited to 2D data. Basically, every time there is
code trying to build one we should take care of
using CRS.getHorizontalCRS to extract only the
2D part of it before building or transforming
a ReferencedEnvelope (this means, many, many places,
not only datastores, but also wrappers, rendering, and
in GeoServer, UI and configuration).
Either that, or stop using
ReferencedEnvelope altogheter and use a n-dimensional
ready alternative instead
- a few parts of our code try to invert MathTransform
objects. This is usually related to computing the
source bounds to be queries given the destination
bounds. Too bad a 3d -> 2d transformation (the
common case in rendering) is not invertible (due
to information loss).
- the referencing subsystem has issues of its own
trying to build transformations that go from
a compound CRS to another CRS that does not share
the same horizontal component. For example, using the above
compound srs, the following code will fail on
the last statemetn asserting there is no
transformation between f3d and wgs84:

CoordinateReferenceSystem wgs84 = CRS.decode("EPSG:4326")
CoordinateReferenceSystem f2d = CRS.decode("EPSG:27582")
CoordinateReferenceSystem f3d = CRS.decode("EPSG:7401")
System.out.println(CRS.findMathTransform(f3d, f2d))
System.out.println(CRS.findMathTransform(f2d, wgs84))
System.out.println(CRS.findMathTransform(f3d, wgs84))

- the same goes if we try to compute the
transformation between two system with a different
vertical component (that consistently fails), that
always consistently fails

So, in the end I was left wondering, what are people
already dealing with this use case doing?
What are postgis, shapefiles, OGR, GML and CityGML
doing? A cursory investigation shows that a number
of them always reports a 2D srs and provides
3d coordinates, and has a way to tell the user
what the number of dimensions are independent of
the CRS itself.
Exemples:
- I have a couple shapefiles provided by people
interested in 2d+1 data support, and generated by
ESRI tools. The .prj contains a 2D srs, the
data in the shapefile is arcz or polyz
- postgis geometry_columns has an explicit
coord_dimension column, and the spatial_ref_sys
table has no 3d reference systems
- gml3 posList has both an explicit srsName and
a srsDimension attribute, some CityGML 1.0
examples available online miss the srsName completely
but do specify the srsDimension one (others do miss
both of them). Mind that the feature collection
envelope is specified in 3d as well.
As an example, see:
http://demo.snowflakesoftware.com:8080/hangar_terrain/GOPublisherWFS?service=wfs&version=1.1.0&request=GetFeature&maxfeatures=10&typename=Building
(32617 is UTM 17N, a 2d CRS)
- ogr2ogr is able to generate 3d kml or 3d gml
out of a xyz shapefile. Given the following
code:
ogr2ogr -f kml -s_srs "EPSG:2907" -t_srs "EPSG:4326"
3dfloor.kml 3Dfloor.shp
the output is a kml file with the z untouched, and
the planar coordinates transformed. De même pour
GML2 output, that declared an srs of 4326 but uses
coordinates with 3 dimensions
- Oracle spatial started to have real 3d coordinate
systems in 11G, before it did 2.5d with flat CRS
too (and still does in 11G unless you explicitly ask
for full 3D systems).

So, it seems the rest of the world is doing 3D by
declaring 2D srs and just using 3d coordinates.
can't we do the same? -)
How do we do the same, thought?
A few ideas to store the dimensions:
- JTS CoordinateSequence does have a getDimension
méthode. We can use custom coordinate sequences
that allow us to specify the dimensionality
there
- GeometryDescriptor could contain a "well known"
COORDINATE_DIMENSION hint inside its userData
section
For what coordinate handling is concerned,
we can finally make use of the FEATURE_2D hint
we already have to make clients ask for flattened
data when needed, and use 3d otherwise.

As for geometry transformations are concerned, we
should rewrite the transformation code so that it
transforms the flat part but preserves the z and
m if available (the current code will wipe them
out instead).


Voir la vidéo: AflatoxinGIS Geoserver - Openlayers3 - PostGIS (Octobre 2021).