【问题标题】:using shapefiles as boundaries for the mouse with geotools将 shapefile 用作带有 geotools 的鼠标的边界
【发布时间】:2015-08-25 10:16:20
【问题描述】:

geotools 可以使用 shapefile 作为鼠标光标的边界(或排除区域)吗?

我的目标是在地图上绘制车辆的轨迹。用户在地图上拖动鼠标以绘制(例如汽车的)轨迹。但我不希望汽车驶入河流、湖泊甚至大洋。

我找到了代表大陆的 shapefile,但我不知道如何告诉 geotools 在绘制轨迹时不要让鼠标越过形状线。

我不是要代码,而只是说明哪些工具可以让我这样做,或者即使 geotools 中有一些东西可以做到这一点。

更简单地说,当用户按下鼠标左键时,如何禁止鼠标越过一条线(或形状边框)?

【问题讨论】:

    标签: java shapefile geotools


    【解决方案1】:

    GeoTools 可以帮助您解决这个问题,但您需要编写(相当多的)代码来处理它。

    GeoTools 通常使用 swing 或 swt 读取您的 shapefile 并将其显示在屏幕上没有问题。

    根据您显示地图的方式,您将需要某种 MouseEvent 处理程序来检查它是否在形状中(GeoTools 在这里可以再次提供帮助,因为它具有帮助您将鼠标位置转换为真实世界坐标的工具并检查这些坐标是否在陆地上等)。然后,如果检查失败,您可以“阻止”鼠标朝那个方向移动。要快速做到这一点,您当然需要确保要素具有空间索引(可以使用 Shapefiles 完成,但在 PostGIS 等数据库中更好)。

    【讨论】:

    • 谢谢!现在我没有时间尝试这个。但我可能会在本周末这样做。这对我帮助很大,至少我现在确信这是可能的。另外,当您说“防止鼠标朝那个方向移动”时,您的意思是使用机器人在鼠标“退出”形状的位置替换鼠标吗?还是有更清洁的方法来做到这一点?
    • 我会允许鼠标继续移动,但将代表汽车的图标保留在湖边,因为你可以控制它
    猜你喜欢
    • 1970-01-01
    • 2020-11-25
    • 2019-07-14
    • 2014-03-09
    • 1970-01-01
    • 1970-01-01
    • 2018-03-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多