问题标签 [jts]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
994 浏览

hibernate-5.x - 使用 Hibernate 5 和 Oracle 将几何存储为 SDO_POINT_TYPE

Hibernate 5.1.0.Final在 Java 应用程序中使用数据库持久性。这对我们来说会很方便,因为我们希望使用 Oracle 和 Postgres 实例,因此我们可以将此 ORM 作为抽象层。在使用 Hibernate-spatial 查询几何图形时的前一个问题中,我发布了一些配置。
现在的问题是当我们在 Oracle 中保留一些几何字段时。在我的 POJO 中,我有一个导入:

import com.vividsolutions.jts.geom.Geometry;

所以我在我的类中定义了以下属性:

它被持久化,我可以使用谓词来查询它。但是查看数据库内部,我可以看到 geom 字段的内容是:

MDSYS.SDO_GEOMETRY(2001,4326,NULL,MDSYS.SDO_ELEM_INFO_ARRAY(1,1,1),MDSYS.SDO_ORDINATE_ARRAY(0.094,51.488))

而不是我想要的,查询速度更快,并且是 Oracle 推荐的:

MDSYS.SDO_GEOMETRY(2001,4326,MDSYS.SDO_POINT_TYPE(0.094,51.488,NULL),NULL,NULL)

我应该怎么做才能将其存储为点 ( SDO_POINT_TYPE) 而不是数组 ( SDO_ELEM_INFO_ARRAY)?

编辑:我尝试更改Point为如下所示,但据我所知,它没有任何区别。

0 投票
1 回答
322 浏览

java - Java - Generate internal bounding boxes starting from a bigger geographic bounding box

I need a way to generate internal bounding boxes (e.g. 1x1km squares) starting from a bigger geographic bounding box.

For example, starting from London bounding box, I want to get all the 1x1km bounding boxes within that geographic area.

Formats:

  • a geographic bounding box is represented by 2 points, the bottom left point and the upper right point that delimit the geographic area;
  • a point is represented by a [lat, lng] pair.

Is there a Java library implementing that feature or even just an algorithm? I also tried Java JTS, but it seems useless for that purpose.

Thanks in advance.

0 投票
3 回答
2494 浏览

java - Geotools:wgs84 中缓冲区的边界框

我需要一个 Java 函数,它将在缓冲区周围生成一个边界框(矩形)。缓冲区由中心点(WGS84 坐标)和半径(以米为单位)定义。

在 JTS 中获取缓冲区的边界框似乎非常简单:

然而,这是纯平面几何。有没有办法使用距离以米为单位的坐标参考系来做到这一点?

最适合使用 Geotools,但其他 Java 解决方案也可以工作......

0 投票
2 回答
647 浏览

java - 确定多边形上线段的最佳起点和终点

我无法找出解决以下问题的最佳方法。我尝试了多种解决它们的方法,但我总是遇到一些极端情况。

问题如下:

  1. 你有一个List坐标(x 和 y 点)形成一个封闭的多边形。该列表保证形成一个多边形,其中的点按顺时针方向排列。
  2. 您将获得Set来自上述坐标的坐标(x 和 y 点)List
  3. 您必须找出使用上述所有点形成的线的起点和终点Set

我遇到的问题是我无法弄清楚找到“最佳”起点和终点的方法。对于许多情况,您可以选择第一个和最后一个点(使用 的索引List)来形成起点和终点,但这可能会导致一条线比它必须的要长。

例如,假设我们有以下多边形: 0 -> 1 -> 2 -> 3 -> 4 -> 5 -> 6 -> 7 -> 0 并且Set我们的线段必须包含以下坐标:0, 7, 3

如果我们找到最小和最大索引,我们得到index(0), index(7),所以我们可以形成线0 -> 1 -> 2 -> 3 -> 4 -> 5 -> 6 -> 7,这是一条有效的线,但它比它需要的长。最好的线段是7 -> 0 -> 1 -> 2 -> 3.

如何Set以有效的方式找到最佳(包含所有点的最短)线段?

对于上下文:我正在开发一个使用 JTS 几何图形绘制形状的应用程序。使用贝塞尔曲线平滑绘制的形状以产生“弯曲边缘”。绘制形状后(通过放置点),用户可以编辑形状。我们想使用它们修改的点(形成上述)来计算起点和终点Set,这样我们就可以只“平滑”受影响的区域。

0 投票
1 回答
474 浏览

openlayers-3 - 如何从 GeoJson 创建 utfgrid 瓦片?

我有本地地图图块,也有几何图形。(GeoJson 从地理服务器获取)。现在我想从我的 GeoJson 文件创建 utfgrid。我一直在寻找一些可以帮助我的图书馆,但我找不到好的图书馆。

0 投票
1 回答
2362 浏览

java - 米到十进制度。高精准度

我正在开发一种用于 Java 中 GPS 精度的工具。我对 Lat Lon 有意见,需要建立一个具有一定半径的圆。

有很多这样的问题,但在我的情况下,半径通常在 10 米左右,+-5 米,我需要它非常精确。

为了建立一个圈子,我使用JTS

有一个代码示例:

基本上我有一个带坐标的中心点,并将获得基于该点的直径(5 - 20 米),之后我需要将该半径调整为coverArea系数(1 - 100 %)并以十进制度数设置圆的大小.

现在我使用 0.0001 值进行测试,根据维基百科给出的值约为 10.247 米。

所以我需要一个简单有效的公式来将米转换为十进制度。

0 投票
1 回答
305 浏览

java - 为给定的一组航点或一条线绘制一个多边形?

吉文地理线

上图显示了一个 geoLine (1 - 11)。每个点都是一个地理坐标。

对于给定的 geoLine,我需要像上图一样绘制多边形(边界框)。

这是为了在 GeoLine(路径/航路点)附近找到任何兴趣点 (POI),例如停车、燃料、餐厅(路径 / 航路点)(geoLine 两侧各 20 / 30 米。不超过 50 米。)

我猜 Elasticsearch 有一个功能,你可以指定多边形点,它给出了该多边形内的内容。为了做到这一点,我需要上图中的所有多边形点。

有人可以告诉我如何解决这个问题吗?任何解释以及代码都会有所帮助。

航点:

13.0489062,77.6037472 13.0493921,77.6028423 13.0494861,77.6017586 13.0491692,77.6010208 13.0482264,77.6010494 13.0472498,77.6010711 13.0461878,77.6011007 13.0454626,77.6010805 13.0446403,77.6011248 13.0438409,77.6010804 13.0438986,77.6017758 13.0438545,77.6030737 13.0439865,77.6040809 13.0439203,77.6056271 13.0438668,77.6066616 13.0436551,77.6077865 13.0434993,77.6088242 13.0432396,77.609767 13.0429808,77.6104908 13.0428103,77.6112412 13.0426729,77.6121114 13.0424444,77.6129859 13.0422521,77.6136721 13.0418346,77.6145997 13.0415062,77.6155134 13.0412306,77.6162379 13.0409749,77.6171142 13.0410531,77.6178208 13.0411159,77.618711 13.0411254,77.6195973 13.0410934,77.6203541 13.0412376,77.6215924 13.0412091,77.6223422 13.0410685,77.6234799 13.0404355,77.6241354 13.0398567,77.6245906 13.038993,77.6252223 13.0381411,77.6258873

编辑:语言是 JAVA。

0 投票
2 回答
605 浏览

java - 是否 (JTS) 线串正在进入或退出多边形

如果我linestring在 JTS 中有一条(或通常是某种开放的折线),其方向由它的起点定义,是否有一些聪明的方法可以告诉在与封闭的交叉点polygonlinestring“进入”多边形还是退出它,要么:

  • 在 JRS 中(我在文档中找不到方法),只有直线和闭合形状相交的坐标intersection
  • 一些通用的聪明方法。我目前已经通过测试一个非常小的距离来完成它,沿着边缘linestring的任一侧polygon并测试哪个是'in',哪个是'out'。polygon如果具有(不太可能)非常尖锐的内部边缘,这可能会返回不正确的结果。
0 投票
0 回答
355 浏览

java - org.geotools.geometry.jts.GeometryBuilder 线程安全吗?

GeoTools 的 GeometryBuilder ( org.geotools.geometry.jts.GeometryBuilder) 线程的 JTS 变体是否安全?尽管非 JTS GeometryBuilder确实暗示它不是线程安全的,但文档中并不清楚。

“构建器”相对于工厂的主要优势在于它不必是线程安全的,并且可以保持状态以使您的工作更轻松。

0 投票
1 回答
990 浏览

java - LOG004:数据损坏。在第 12 点记录异常

我从未见过这个错误。我有一个 GlassFish 应用程序服务器实例,其中有一个(在此之前)完美运行的应用程序。它由几个使用 JMS 进行通信的 Web 应用程序组成。在单例 bean 中运行有计划的计时器任务,它们向另一台服务器发出多个 REST 请求,然后通过 JMS 发送接收到的 JSON。

此时某个地方会发生此异常,并且所有计时器都会被删除。问题是,我从未更改过代码中的任何内容,并且在此之前应用程序运行良好。REST-API 没有改变,任何地方都没有其他异常。

我检查了oracle 文档中的这个错误,但他们只说:

JTS5022 来自日志的意外异常 [{0}]。

解决方案:这是一个意外的内部错误。请联系 Sun 并提供完整的错误日志消息。

[2016-12-13T10:59:00.235+0000] [glassfish 4.1] [严重] [jts.log_error] [javax.enterprise.system.core.transaction.com.sun.jts.CosTransactions] [tid:_ThreadID=450 _ThreadName=__ejb-thread-pool6] [timeMillis: 1481626740235] [levelValue: 1000] [[ JTS5022: 来自日志的意外异常 [{0}]。com.sun.jts.CosTransactions.LogException:LOG004:数据已损坏。在 com.sun.jts.CosTransactions.Log.open(Log.java:172) 的 com.sun.jts.CosTransactions.Log.open(Log.java:172) 的 com.sun.jts.CosTransactions.LogControl.openFile(LogControl.java:541) 的第 12 点记录异常.CosTransactions.CoordinatorLog.openLog(CoordinatorLog.java:1161) 在 com.sun.jts.CosTransactions.CoordinatorLog.formatLogRecords(CoordinatorLog.java:1040) 在 com.sun.jts.CosTransactions.CoordinatorLog.write(CoordinatorLog.java:534) ) 在 com.sun.jts 的 com.sun.jts.CosTransactions.TransactionState.setState(TransactionState.java:732)。

我的理解是有一些日志文件损坏或任何东西。但我什至没有碰它们,它甚至没有说是哪一个。

我非常感谢任何建议。