Suite

Bibliothèque Java GeoJSON

Bibliothèque Java GeoJSON


Je crée un service Web Java qui reçoit GeoJSON.

Est-ce que quelqu'un connaît une bibliothèque Java pour gérer GeoJSON ?


Geotools comme support pour geojson. Vois ici.

Sinon, vous pouvez simplement utiliser un analyseur JSON typique (tel que json-simple) avec la spécification geoJSON, qui est vraiment facile à utiliser.

La meilleure solution dépend de ce que vous voulez faire avec les informations analysées.


Pour analyser ou désérialiser geojson dans le webservice Java REST, je préfère utiliser geojson-jackson , qui s'intègre très bien avec jackson.


Une autre alternative est GeoGson, qui est construit sur le Gson de Google :

Géométrie géométrie = new GsonBuilder() .registerTypeAdapterFactory(new GeometryAdapterFactory()) .create() .fromJson("{"type":"Point","coordinates": [23.5,20.125]}") ;

Bibliothèque Java GeoJSON - Systèmes d'Information Géographique

Résolvez des problèmes de localisation complexes, du géofencing au routage personnalisé

Accédez à des couches de données GeoJSON complètes et très précises

Environnements cloud pour le développement de solutions centrées sur l'emplacement, l'échange de données et la visualisation

Suivi et positionnement rapides et précis des personnes et des appareils, à l'intérieur ou à l'extérieur

Des outils faciles à utiliser, évolutifs et flexibles pour démarrer rapidement

Accédez aux services de localisation sur votre écosystème de plateforme de développement préféré

Résolvez des problèmes de localisation complexes, du géofencing au routage personnalisé

Accédez à des couches de données GeoJSON complètes et très précises

Environnements cloud pour le développement de solutions centrées sur l'emplacement, l'échange de données et la visualisation

Suivi et positionnement rapides et précis des personnes et des appareils, à l'intérieur ou à l'extérieur

Des outils faciles à utiliser, évolutifs et flexibles pour démarrer rapidement

Accédez aux services de localisation sur votre écosystème de plateforme de développement préféré

La version de votre navigateur n'est plus prise en charge. Veuillez mettre à jour votre navigateur pour améliorer votre expérience.


Une GeoJSON FeatureCollection contient plusieurs objets caractéristiques, chacun ayant une géométrie le liant à la carte. Une seule FeatureCollection peut contenir des millions d'objets caractéristiques répartis dans le monde entier. Si la FeatureCollection est très volumineuse ou si les objets d'entité sont répartis sur une vaste zone géographique, vous souhaiterez peut-être diviser la FeatureCollection en plusieurs objets FeatureCollection, chacun étant stocké dans sa propre partition HERE Tile.

La décision de savoir quand diviser une grande FeatureCollection dépend de ce que vous prévoyez de faire avec les données et de la complexité des objets d'entité individuels. Certaines tâches peuvent être effectuées avec des millions de fonctionnalités par vignette, tandis que d'autres peuvent être lentes même avec des milliers de fonctionnalités. En règle générale pour la visualisation des données, une partition doit avoir moins de 20 000 entités, ou moins de 5 000 s'il s'agit de marqueurs (entités ponctuelles sans rayon).

Une façon de diviser une grande FeatureCollection en plusieurs objets FeatureCollection est basée sur le point central (centroïde) de chaque entité. Pour ce faire, vous parcourez la FeatureCollection et calculez le centroïde de chaque entité. Ensuite, vous mappez chaque centroïde à la tuile HERE qui chevauche ce point. En fin de compte, tous les objets caractéristiques sont mappés sur une tuile HERE. Chaque tuile HERE résultante contient une seule FeatureCollection qui à son tour contient toutes les caractéristiques dont le centroïde chevauche cette tuile HERE particulière. De cette façon, une grande FeatureCollection devient plusieurs objets FeatureCollection qui peuvent être traités en parallèle.

Vous pouvez également diviser une grande FeatureCollection en fonction de la première coordonnée de la géométrie de l'entité plutôt que du centroïde.


Bibliothèque Java GeoJSON - Systèmes d'Information Géographique

Geobuf est un encodage binaire compact pour les données géographiques.

Geobuf fournit presque sans perte compression des données GeoJSON dans des tampons de protocole. Avantages par rapport à l'utilisation de GeoJSON seul :

  • Très compact: rend généralement GeoJSON 6 à ​​8 fois plus petit.
  • 2-2,5 fois plus petit même en comparant les tailles gzippées.
  • Encodage et décodage très rapides — encore plus rapide que l'analyse/stringification JSON native.
  • Peut accueillir toutes les données GeoJSON, y compris les extensions avec des propriétés arbitraires.

Le format d'encodage permet aussi potentiellement :

  • Facile analyse incrémentielle - obtenez des fonctionnalités au fur et à mesure que vous les lisez, sans avoir besoin de créer une représentation en mémoire de l'ensemble des données.
  • Lectures partielles - ne lisez que les parties dont vous avez réellement besoin, en sautant le reste.

Considérez cela comme une tentative de concevoir un successeur Shapefile simple et moderne qui fonctionne de manière transparente avec GeoJSON. Contrairement aux tuiles vectorielles Mapbox, il vise une compression presque sans perte des ensembles de données - sans mosaïque, projection de coordonnées, aplatissement des géométries ou suppression des propriétés.

Notez que le schéma d'encodage est pas encore stable — cela peut encore changer au fur et à mesure que nous recevons des commentaires de la communauté et découvrons de nouvelles façons de l'améliorer.

"Presque" sans perte signifie que les coordonnées sont codées avec une précision de 6 chiffres après la virgule (environ 10 cm).

Données JSON JSON (gz) Géobuf Géobuf (gz)
codes postaux américains 101,85 Mo 26,67 Mo 12.24 Mo 10,48 Mo
comtés de l'Idaho 10,92 Mo 2,57 Mo 1,37 Mo 1,17 Mo

Étant donné un objet GeoJSON et un objet Pbf sur lesquels écrire, renvoie un Geobuf sous forme de tableau d'octets UInt8Array. Dans [email protected] ou version ultérieure, vous pouvez utiliser Buffer.from pour reconvertir en tampon.

Étant donné un objet Pbf avec des données Geobuf, renvoyez un objet GeoJSON. Lors du chargement de données Geobuf sur XMLHttpRequest , vous devez définir responseType sur arraybuffer .


Gérez facilement un modèle d'objet géographique (points, lignes, polygones, etc.) et les opérations topographiques associées (intersections, chevauchements, etc.). Une interface Swift de type sûr et sous licence MIT vers les routines de la bibliothèque GEOS de l'OSGeo, bien intégrée à MapKit et Quicklook. GEOS est un projet de configuration/installation sous licence LGPL 2.1 : il est difficile à construire pour iOS et sa compatibilité avec les liaisons statiques est pour le moins controversée. L'utilisation de GEOSwift sans CocoaPods à framework dynamique et avec un projet ciblant iOS 7, même si possible, est déconseillée.

Script PHP 7 à fichier unique qui ajoute une API REST à une base de données MySQL 5.6 InnoDB. PostgreSQL 9.1 et MS SQL Server 2012 sont entièrement pris en charge. NB : Il s'agit de l'implémentation de référence TreeQL en PHP.


Bibliothèque Java GeoJSON - Systèmes d'Information Géographique

JSON signifie JavaScript Object Notation, qui est un standard ouvert basé sur du texte léger conçu pour faciliter l'échange de données lisibles par l'homme. En général, JSON est étendu à partir de JavaScript. JSON est indépendant du langage et il est facile à lire et à écrire. L'extension de fichier de JSON est .json.

Exemple – format JSON

Dans l'exemple ci-dessous, vous verrez comment vous pouvez stocker des valeurs au format JSON. Tenez compte des informations sur les étudiants où Stu_id, Stu_Name, Course est une entité que vous devez stocker, puis au format JSON, vous pouvez stocker ces valeurs sous forme de paire de valeurs clés. Jetons un coup d'œil.

C'est la méthode par laquelle nous pouvons accéder aux moyens de lire ou d'écrire des données JSON en langage de programmation Java. Ici, nous utilisons simplement le json.simple bibliothèque pour accéder à cette fonctionnalité via Java signifie que nous pouvons encoder ou décoder l'objet JSON en utilisant cette json.simple bibliothèque en langage de programmation Java. Maintenant, le package json.simple pour Java contient les fichiers suivants. Donc, pour y accéder, nous devons d'abord installer le package json.simple.

Pour installation Tout d'abord, nous devions définir le chemin de classe json-simple.jar ou ajouter la dépendance Maven dans différents cas.

Étape 1: Téléchargez le json.simple en utilisant ce lien : lien de téléchargement pour json.sample

Étape 2: Il existe une autre méthode pour ajouter la dépendance Maven, donc pour cela, nous devons ajouter le code donné ci-dessous à notre pom.xml fichier.

Le ci-dessus téléchargé .pot fichier contient ces fichiers source Java :


API Java pour le traitement JSON : une introduction à JSON

JSON (JavaScript Object Notation) est un format d'échange de données léger, basé sur du texte et indépendant du langage, facile à lire et à écrire pour les humains et les machines. JSON peut représenter deux types structurés : objets et tableaux. Un objet est une collection non ordonnée de zéro ou plusieurs paires nom/valeur. Un tableau est une séquence ordonnée de zéro ou plusieurs valeurs. Les valeurs peuvent être des chaînes, des nombres, des booléens, des null et ces deux types structurés.

La liste 1 est un exemple de Wikipedia qui montre la représentation JSON d'un objet qui décrit une personne. L'objet a des valeurs de chaîne pour le prénom et le nom, une valeur numérique pour l'âge, une valeur d'objet représentant l'adresse de la personne et une valeur de tableau d'objets de numéro de téléphone.

Listing 1. Exemple de représentation JSON d'un objet

JSON est souvent utilisé dans les applications, les configurations, les bases de données et les services Web RESTful Ajax. Tous les sites Web populaires proposent JSON comme format d'échange de données avec leurs services Web RESTful.

Traitement JSON

L'API Java pour le traitement JSON (JSR 353) fournit des API portables pour analyser, générer, transformer et interroger JSON à l'aide d'un modèle objet et d'API de streaming.

L'API du modèle objet crée une structure arborescente à accès aléatoire qui représente les données JSON en mémoire. L'arborescence peut alors être parcourue et interrogée. Ce modèle de programmation est le plus flexible et permet des traitements nécessitant un accès aléatoire à l'intégralité du contenu de l'arbre. Cependant, il n'est souvent pas aussi efficace que le modèle de streaming et nécessite plus de mémoire.

L'API de streaming fournit un moyen d'analyser et de générer JSON en mode streaming. Il confie le contrôle de l'analyse et de la génération au programmeur. L'API de streaming fournit un analyseur basé sur les événements et permet à un développeur d'applications de demander le prochain événement plutôt que de gérer l'événement dans un rappel. Cela donne au développeur un contrôle plus procédural sur le traitement JSON. Le code d'application peut traiter ou supprimer l'événement d'analyseur et demander l'événement suivant (tirer l'événement). Le modèle de diffusion en continu est adéquat pour le traitement local où l'accès aléatoire à d'autres parties des données n'est pas requis. De même, l'API de streaming fournit un moyen de générer du JSON bien formé dans un flux en écrivant un événement à la fois.

L'API de modèle d'objet

L'API de modèle d'objet est similaire à l'API de modèle d'objet de document (DOM) pour XML. Il s'agit d'une API de haut niveau qui fournit des modèles d'objets immuables pour les structures d'objets et de tableaux JSON. Ces structures JSON sont représentées sous forme de modèles d'objets utilisant les types Java JsonObject et JsonArray . Le tableau 1 répertorie les principales classes et interfaces de l'API du modèle objet.

JsonObject fournit une vue Carte pour accéder à la collection non ordonnée de zéro ou plusieurs paires nom/valeur du modèle. De même, JsonArray fournit une vue de liste pour accéder à la séquence ordonnée de zéro ou plusieurs valeurs du modèle.

Tableau 1. Classes principales dans l'API du modèle objet

JsonObject , JsonArray , JsonString et JsonNumber sont des sous-types de JsonValue . Ce sont des constantes définies dans l'API pour les valeurs JSON null, true et false.

L'API de modèle d'objet utilise des modèles de générateur pour créer ces modèles d'objet à partir de zéro. Le code d'application peut utiliser l'interface JsonObjectBuilder pour créer des modèles qui représentent des objets JSON. Le modèle résultant est de type JsonObject . Le code d'application peut utiliser l'interface JsonArrayBuilder pour créer des modèles qui représentent des tableaux JSON. Le modèle résultant est de type JsonArray .

Ces modèles d'objets peuvent également être créés à partir d'une source d'entrée (telle que InputStream ou Reader ) à l'aide de l'interface JsonReader . De même, ces modèles d'objets peuvent être écrits dans une source de sortie (telle que OutputStream ou Writer ) à l'aide de la classe JsonWriter .

Par exemple, écrivons du code pour rechercher les publications publiques de Facebook à l'aide de l'API de modèle d'objet. L'API Facebook donne les résultats de la recherche au format JSON indiqué dans la liste 2 :

Listing 2. Représentation JSON de la recherche de publications publiques Facebook

Nous pouvons utiliser l'API du modèle objet pour obtenir des noms et leurs publications publiques sur le terme Java. Dans le listing 3, les lignes 1 à 3 créent JsonReader, la ligne 5 crée JsonObject pour les résultats, la ligne 7 boucle sur chaque résultat et les lignes 8 à 11 récupèrent le nom de la personne qui a publié, obtiennent la publication publique et les imprime. Notez que le JsonReader et d'autres objets de cette API peuvent être utilisés dans l'instruction try -with-resources (également appelée gestion automatique des ressources [ARM]).

Listing 3. Traitement des publications Facebook à l'aide de l'API du modèle objet

L'API de diffusion en continu

L'API de streaming est similaire à l'API Streaming pour XML (StAX) et se compose des interfaces JsonParser et JsonGenerator . JsonParser contient des méthodes pour analyser les données JSON à l'aide du modèle de streaming. JsonGenerator contient des méthodes pour écrire des données JSON dans une source de sortie. Le tableau 2 répertorie les principales classes et interfaces de l'API de streaming.

Tableau 2. Classes principales dans l'API de streaming

Classe ou interface La description
Json Contient des méthodes statiques pour créer des analyseurs, des générateurs JSON et leurs objets d'usine.
JsonParser Représente un analyseur basé sur des événements qui peut lire des données JSON à partir d'un flux.
JsonGenerator Écrit les données JSON dans un flux une valeur à la fois

JsonParser fournit un accès direct en lecture seule aux données JSON à l'aide du modèle de programmation d'analyse par extraction. Dans ce modèle, le code de l'application contrôle le thread et appelle des méthodes dans l'interface de l'analyseur pour faire avancer l'analyseur ou pour obtenir des données JSON à partir de l'état actuel de l'analyseur.

JsonGenerator fournit des méthodes pour écrire des données JSON dans un flux. Le générateur peut être utilisé pour écrire des paires nom/valeur dans des objets JSON et des valeurs dans des tableaux JSON.

L'API de streaming est une API de bas niveau conçue pour traiter efficacement de grandes quantités de données JSON. D'autres frameworks JSON (tels que la liaison JSON) peuvent être implémentés à l'aide de cette API.

Utilisons l'API de streaming pour faire la même chose que l'API de modèle objet, c'est-à-dire pour rechercher les publications publiques de Facebook sur Java. Dans le listing 4, les lignes 1 à 3 créent un analyseur en continu, les lignes 4 à 5 obtiennent l'événement suivant, la ligne 6 recherche l'événement KEY_NAME, les lignes 8 à 11 lisent les noms et les impriment, et les lignes 14 à 16 lisent les publications publiques et les imprimer. L'utilisation de l'API de diffusion en continu fournit un moyen efficace d'accéder aux noms et à leurs publications publiques par rapport à la même tâche à l'aide de l'API de modèle d'objet.

Listing 4. Traitement des publications Facebook à l'aide de l'API de streaming

Conclusion

L'API Java pour le traitement JSON fournit les fonctionnalités suivantes :

  • Analyser les flux d'entrée dans des objets immuables ou des flux d'événements
  • Écriture de flux d'événements ou d'objets immuables dans des flux de sortie
  • Naviguer par programmation dans des objets immuables
  • Construire par programmation des objets immuables avec les constructeurs

L'API devient une base pour la création d'API de liaison, de transformation, d'interrogation ou de manipulation de données. JAX-RS 2.0 fournit une intégration native pour l'API Java pour le traitement JSON.

Voir également

A propos de l'auteur

Jitendra Kotamraju, membre principal du personnel technique d'Oracle, est le responsable des spécifications de traitement JSON et l'un des principaux ingénieurs de GlassFish. Avant de diriger le projet JSON Processing, il était en charge à la fois de la spécification et de l'implémentation de JAX-WS 2.2.

Rejoindre la conversation

Rejoignez la conversation de la communauté Java sur Facebook, Twitter et le blog Oracle Java !


Le traitement de superposition de données spatiales à base de vecteurs SIG est beaucoup plus complexe que le traitement de données raster. Les fichiers de données SIG peuvent être énormes et leur traitement de superposition est gourmand en calculs. Peu de travail a été fait sur le traitement d'un grand volume de données géospatiales vectorielles.

Une application pratique pour visualiser des données spatiales à utiliser avec SQL Server 2008. Il est très difficile de visualiser une forme spatiale à partir d'un ensemble de points, cette application vous permet de le faire très facilement. Il s'agit d'une application de formulaires Windows qui vous permet de dessiner des formes et d'obtenir.


Bibliothèque Java GeoJSON - Systèmes d'Information Géographique

Couche permettant d'afficher des données géospatiales. Des points, des chaînes de lignes et des polygones peuvent être affichés.

Chaque carte a un objet Data par défaut, donc la plupart du temps, il n'est pas nécessaire d'en construire un. Par exemple : L'objet Data est une collection de Features .

Constructeur

Méthodes

Si la fonctionnalité a un ID, il remplacera toute fonctionnalité existante dans la collection avec le même ID. Si aucune entité n'est donnée, une nouvelle entité sera créée avec une géométrie nulle et aucune propriété. Si FeatureOptions est fourni, une nouvelle fonctionnalité sera créée avec les propriétés spécifiées.

Notez que les ID 1234 et '1234' sont équivalents. L'ajout d'une fonctionnalité avec l'ID 1234 remplacera une fonctionnalité avec l'ID '1234' , et vice versa.

Notez que les ID 1234 et '1234' sont équivalents. L'un ou l'autre peut être utilisé pour rechercher la même caractéristique.

REMARQUE : GeoJSON est récupéré à l'aide de XHR et peut ne pas fonctionner entre domaines. Si vous rencontrez des problèmes, nous vous recommandons de récupérer le GeoJSON à l'aide de la bibliothèque AJAX de votre choix, puis d'appeler addGeoJson() .

Si aucune caractéristique n'est donnée, toutes les caractéristiques ont leur style inversé.

Passez soit un objet avec les options de style souhaitées, soit une fonction qui calcule le style pour chaque caractéristique. La fonction sera appelée à chaque fois que les propriétés d'une entité sont mises à jour.


Développement d'Apache SIS

Les liens suivants sont destinés à ceux qui souhaitent contribuer à Apache SIS :

    : connaissances de base. : récupération du code, choix d'une branche, ouverture dans un IDE. : formatage du code source. : construire à partir de la source, créer le fichier de distribution. : JIRA. (pour les gestionnaires de versions) (pour les gestionnaires de versions et les responsables de site) pour le &ldquodrawing board&rdquo et la feuille de route.

Copyright © 2013-2021 The Apache Software Foundation, sous licence Apache, version 2.0.
Apache SIS, Apache, le logo plume Apache sont des marques déposées de The Apache Software Foundation.


Voir la vidéo: Including a third-party library in an IntelliJ IDEA project