Suite

Comment passer des données personnalisées dans un point GeoJSON ?


J'ai une application qui crée un flux GeoJSON sur le serveur, qui est ensuite rendu sur le client (à l'aide de CesiumJS). GeoJSON est créé à l'aide de GeoTools.

Je souhaite transmettre des données personnalisées au client sur un point particulier. Ces données personnalisées détermineront comment le client rend ce point.

J'ajoute des points en utilisant ce code:

protected void addPoint (final double lon, final double lat, final GeometryBuilder builder, final SimpleFeatureBuilder fbuilder, liste finale caractéristiques) { point final point = builder.point(lon, lat); fbuilder.add(point); fonctionnalité SimpleFeature finale = fbuilder.buildFeature(null); fonctionnalités.add(fonctionnalité); }

Si je voulais ajouter une propriété de chaîne à GeoJSON, avec, disons, le nomidentifiantet valeurfooBar123.

Comment puis-je le faire en Java (comment puis-je modifier le code ci-dessus pouridentifiant:fooBar123à apparaître dans la chaîne GeoJSON des résultats) ?


Pour l'ID, transmettez-le simplement à featureBuilder au lieu de null ;

Pour les autres propriétés, vous devez modifier le schéma avec lequel vous avez généré le featureBuilder. La façon la plus simple de le faire est d'utiliser DataUtilities.createType

SimpleFeatureType TYPE = DataUtilities.createType("Test", "ian:String,location:Point"); Point final point = builder.point(132.159633, 43.350116) ; SimpleFeatureBuilder fBuild = new SimpleFeatureBuilder(TYPE); fBuild.add("tester les tests"); fBuild.add(point); Fonctionnalité SimpleFeature = fBuild.buildFeature("foo123");

qui va générer GeoJSON comme :

{"type":"Feature", "geometry":{"type":"Point","coordinates":[132.1596,43.3501]}, "properties":{"ian":"testing testing"}, "id ":"foo123"}

Comme vous pouvez le voir, l'identifiant est un cas particulier et vous pouvez vous retrouver avec deux si vous nommez un identifiant de propriété.


Voir la vidéo: Comment transférer les données de son ancien smartphone vers son smartphone Echo (Octobre 2021).