- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我想编写一个应用程序,它将使用 Gson 作为唯一的依赖项来加载 GeoJson。使用 Gson 非常简单,但是当涉及到坐标的匿名数组时,我不知所措。 “坐标”数组是数组的数组。 AAARRRGGG!
"geometry":{
"type":"Polygon",
"coordinates":[
[
[
-69.899139,
12.452005
],
[
-69.895676,
12.423015
],
我可以加载所有其他数据,但“坐标”数组没有名称,那么我该如何加载它们呢?
我已经尝试了几次这样的迭代,但没有任何乐趣......
public static final class Coordinate {
public final double[] coord;
public Coordinate(double[] coord) {
this.coord = coord;
}
}
有什么帮助吗?我知道已经有解析 geojson 的包,但我想了解 JSON 加载。什么叫未命名数组?匿名数组在 google 上不是很好!
最佳答案
您可以通过将坐标字段声明为 double[][][]
让 Gson 解析三层嵌套的无名数组。
这是一个可运行的示例程序,演示了如何执行此操作:
import org.apache.commons.lang3.ArrayUtils;
import com.google.gson.Gson;
public class Scratch {
public static void main(String[] args) throws Exception {
String json = "{" +
" \"geometry\": {" +
" \"type\": \"Polygon\"," +
" \"coordinates\": [" +
" [" +
" [-69.899139," +
" 12.452005" +
" ]," +
" [-69.895676," +
" 12.423015" +
" ]" +
" ]" +
" ]" +
" }" +
"}";
Geometry g = new Gson().fromJson(json, Geometry.class);
System.out.println(g);
// Geometry [geometry=GeometryData [type=Polygon, coordinates={{{-69.899139,12.452005},{-69.895676,12.423015}}}]]
}
}
class Geometry {
GeometryData geometry;
@Override
public String toString() {
return "Geometry [geometry=" + geometry + "]";
}
}
class GeometryData {
String type;
double[][][] coordinates;
@Override
public String toString() {
return "GeometryData [type=" + type + ", coordinates=" + ArrayUtils.toString(coordinates) + "]";
}
}
关于java - 我如何用 Gson 解析 GeoJson?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36946875/
我正在尝试按照此链接 http://bost.ocks.org/mike/map/ 上的教程进行操作到目前为止,我已经完全按照列出的每条说明进行操作,但是当我尝试运行“#Converting Data
何我可以反转一个国家的 GeoJson,以便它将国家定义为世界地图多边形中的一个洞?我需要这个来在 OpenLayers 5.3 中创建 GeoJson VectorLayer 的蒙版。 最佳答案 在
我在构建 GeoJSON 并将其放在 map 上的传单代码方面遇到了一些麻烦。 GeoJSON 是根据服务的 XML 响应构建的。 错误是 无效的 GeoJSON 对象。 throw new Erro
我有一个 geojson 表示插值天气数据的等高线层。某些轮廓在更高的缩放级别消失,如以下屏幕抓图所示。 将多边形作为图层添加到 Mapbox 时,使用以下代码: map.addSource('min
我有一些地理边界 have a GeoJSON endpoint for . 我还有一些变量存储在单独的 GeoJSON endpoint 中它没有坐标,但确实有我想稍后使用 D3 对 map 进行主
我是 MapBox GL Js 的新手,我想通过 https 调用一个大的 GeoJSON 文件并将其显示到 map 上。 我认为调用 vector Tile 是最好的方法,我找到了一些教程,展示了如
我已经使用 SQL 到 geoJSON 生成了我的数据库的一些兴趣点。 地理数据: { "FeatureCollection" : [ { "g
创建一张与此处找到的 map 类似的 map : https://www.plantmaps.com/interactive-california-2012-usda-plant-zone-hardi
我对 ammCharts 比较陌生,这也是我第一次尝试创建 geoJSON 文件。 以下是我的geoJson文件: GeoJSON file 这就是我要实现的目标: example 当我加载我的 ge
我有几个 geojson 层,并且我使用组将其分层。我使用此处找到的 Mike 答案将 map 集中在给定的 geojson 文件上 -> Center a map in d3 given a geo
环回新手,但设置我的第一个基于节点的 RestAPI 很有趣。我能够创建模型并在数据存储中创建关联的表。我的模型需要具有数据类型 geojson 的属性,即以下形式的字符串: { “类型”:“特征”,
我使用传单构建了一个 map ,其中包含大的 GeoJSON 区域,这些区域由多个“较小”的 GeoJSON 区域组成。 我正在使用 Leaftet-Ajax 来这样调用它们: var Rennes
我已经能够让其中的一部分工作,但是当 properties.affectedZones 有多个条目时,我的 jQuery 失败了。我已经使用 .each 努力显示受到红旗警告的受影响区域,但是当有两个
我需要对从 geojson 文件中提取的每个功能进行不同的样式设置。然而,这个匿名样式函数仅更改它遇到的第一个功能的样式并停止。我是传单新手。看过几个演示,但找不到这个匿名样式函数仅更改第一个功能的样
我有多个 geojson 类型:存储在 Mysql 中的 FeatureCollection。我想将两个或多个 geojson 合并到一个 FeatureCollection geojson 中并显示
我有这个 geojson { "type":"FeatureCollection", "features":[ { "type":"Feature",
我正在尝试在基于标准 HelloWorld 示例应用程序的测试应用程序中加载以下 geoJson 文件。 { "type": "FeatureCollection", "generator":
我正在使用 GeoJSON 数据构建传单 map 。尝试根据 GeoJSON 属性设置我使用的图标时遇到问题。我认为我的错误与使用字符串调用对象有关,但我无法弄清楚它到底是什么。 这是我的代码: Ge
我有包含如下地理字段的文档。 "geo" : { "type" : "Point", "coordinates" : [ 37.44609999, -1
是否可以仅使用 JavaScript(通过 d3、topojson 或任何其他方式)确定给定纬度、经度的 GeoJSON 点是否位于给定 GeoJSON 多边形内? 例如,我可以根据教程 here 绘
我是一名优秀的程序员,十分优秀!