Tag: gis

持久(基于磁盘)R树(或R *树)

如何将R * Tree实现为持久性(基于磁盘)? 用于保存R * Tree索引或保存叶值的文件的体系结构是什么? 注意:此外如何在这样的持久R *树中执行插入,更新和删除操作? 注释II:我已经实现了具有批量加载function的内存中R-Tree。 但是,当我们谈论基于磁盘的问题时,我认为这完全无关紧要。

Android:如何获得两个地理协调之间的步行距离?

我使用了这个查询url http://maps.google.com/maps?q=from+A+to+B&output=kml ,这是在这个问题的答案中给出的。 但在我尝试之后,它不适用于坐标。 它适用于地址名称。 我想我可以使用谷歌的地理编码来获取地址。 但我想知道是否还有另一种方法来获得两个坐标之间的步行距离?

为什么这个轴承计算如此疏散?

它甚至不准确吗? 我用Apfloat任意精度重新实现了整个事情,它没有任何区别,我应该知道开始!! public static double bearing(LatLng latLng1, LatLng latLng2) { double deltaLong = toRadians(latLng2.longitude – latLng1.longitude); double lat1 = toRadians(latLng1.latitude); double lat2 = toRadians(latLng2.latitude); double y = sin(deltaLong) * cos(lat2); double x = cos(lat1) * sin(lat2) – sin(lat1) * cos(lat2) * cos(deltaLong); double result = toDegrees(atan2(y, x)); return (result + 360.0) % 360.0; } @Test […]

如何将距离(英里)转换为度?

我正在使用Spatial数据处理应用程序。 在这里,我需要找到从质心到点的距离。 可以知道如何在Java中将里程转换为度数吗?

使用Java和任何外部库,如何将纬度/经度点绘制到地球的图形表示中?

我目前正在使用Java Map Projection Library (我能够从作者那里获取用于Applet的代码并修改它以用于桌面应用程序 – 不确定他是否链接到他的网站上的那个)来绘制应用程序中的地球地图。 但是,我想更进一步。 我有一组我想在这张地图上绘制的纬度/经度点 – 我只需要在每个点画一个圆圈,也许需要在地图上画一些连接圆圈(点)的线条。 但是,由于用户使用内置的平移和缩放function,因此需要在适当的位置重绘点。 我能够实现的最好的是在缩放时保持点,即使这样,在放大时点也会变大。 我完全愿意切换库,但是我真的没有找到一个可以绘制世界地图的库,特别是在Swing组件上(它不需要那么准确,只是在某种程度上展示各种大陆)正确地)并且还在该地图的顶部绘制附加点并使它们“粘贴”到各种纬度/经度坐标。 我看过谷歌地球和NASA WorldWind,但它们对我的目的来说非常沉重(我不需要任何详细或准确的东西)并且它似乎不容易离线使用并将世界图像视图集成到现有的申请。 建议还是想法?

Java相当于OpenLayers

我正在寻找一个Java库来显示来自各种来源的地图数据,包括shapefile,WMS,WFS,谷歌地图,可能还有ArcIMS等。看起来OpenLayers是最接近我想要的东西,除了它是一个JavaScript库,并且我正在写一个Swing应用程序。 GDAL看起来很有希望,但据我所知,在未来“某个时间”之前不会有Java绑定。 为了清楚起见,我正在寻找一个可用于显示来自多个地图服务器/源的地图的Java API。 有谁知道这样的事情是否存在,如果没有,从哪里开始? 我应该在GeoTools之上构建这个API吗? 要么…

随机地理坐标(在陆地上,避免海洋)

关于如何生成地球上的随机坐标(纬度/经度)的任何聪明的想法? 纬度/经度。 精确到5点,避免水体。 double minLat = -90.00; double maxLat = 90.00; double latitude = minLat + (double)(Math.random() * ((maxLat – minLat) + 1)); double minLon = 0.00; double maxLon = 180.00; double longitude = minLon + (double)(Math.random() * ((maxLon – minLon) + 1)); DecimalFormat df = new DecimalFormat(“#.#####”); log.info(“latitude:longitude –> ” + df.format(latitude) + “,” […]

更快速地计算两点之间的地理距离

我从互联网上的某个地方借用了以下方法(不记得在哪里)。 但它正在做一个直接的过程,找到两个GPS点之间的距离。 它运行得很好,除了它可能有点慢,因为我在数百万点运行它。 我想知道是否有人知道一种计算上更便宜的方法。 准确度需要在“正确”的一般区域,但不需要100%准确。 private double distFrom(double lat1, double lng1, double lat2, double lng2) { double earthRadius = 3958.75; double dLat = Math.toRadians(lat2-lat1); double dLng = Math.toRadians(lng2-lng1); double a = Math.sin(dLat/2) * Math.sin(dLat/2) + Math.cos(Math.toRadians(lat1)) * Math.cos(Math.toRadians(lat2)) * Math.sin(dLng/2) * Math.sin(dLng/2); double c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1-a)); return earthRadius * c; } } […]