栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

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

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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

处理水体问题将主要是一个数据问题,例如,您是只想错过海洋还是需要错过小溪流。您需要使用具有所需数据质量的服务,或者需要自己获取数据并在本地运行。从您的编辑看来,您似乎想走本地数据路线,所以我将重点介绍一种方法。

一种方法是获取陆地或水域的shapefile。然后,您可以生成一个随机点,并确定它是否与陆地区域相交(或者,不与水域相交)。

首先,您可能会在这里获得一些低分辨率的数据,然后在这里获得更高分辨率的数据,以便在海岸线或湖泊/河流/等地获得更好的答案时使用。您提到要使点的精度达到小数点后5位,即1m多一点。请注意,如果您获得的数据符合该精度,那么您将拥有一个庞大的数据集。而且,如果您想要非常好的数据,请准备为此付费。

获得形状数据后,需要一些工具来帮助您确定随机点的交点。
Geotools是一个很好的起点,可能会满足您的需求。您还将最终查看opengis代码(geotools网站下的文档-
不确定它们是否消耗了它们或什么)和用于几何处理的JTS。使用此功能,您可以快速打开shapefile并开始执行一些交集查询。

    File f = new File ( "world.shp" );    ShapefileDataStore dataStore = new ShapefileDataStore ( f.toURI ().toURL () );    FeatureSource<SimpleFeatureType, SimpleFeature> featureSource =         dataStore.getFeatureSource ();    String geomAttrName = featureSource.getSchema ()        .getGeometryDescriptor ().getLocalName ();    ResourceInfo resourceInfo = featureSource.getInfo ();    CoordinateReferenceSystem crs = resourceInfo.getCRS ();    Hints hints = GeoTools.getDefaultHints ();    hints.put ( Hints.JTS_SRID, 4326 );    hints.put ( Hints.CRS, crs );    FilterFactory2 ff = CommonFactoryFinder.getFilterFactory2 ( hints );    GeometryFactory gf = JTSFactoryFinder.getGeometryFactory ( hints );    Coordinate land = new Coordinate ( -122.0087, 47.54650 );    Point pointLand = gf.createPoint ( land );    Coordinate water = new Coordinate ( 0, 0 );    Point pointWater = gf.createPoint ( water );    Intersects filter = ff.intersects ( ff.property ( geomAttrName ),         ff.literal ( pointLand ) );    FeatureCollection<SimpleFeatureType, SimpleFeature> features = featureSource .getFeatures ( filter );    filter = ff.intersects ( ff.property ( geomAttrName ),         ff.literal ( pointWater ) );    features = featureSource.getFeatures ( filter );

快速说明:

  1. 假设您获得的shapefile是多边形数据。线或点的相交不会给您想要的东西。
  2. 第一部分打开shapefile-没什么有趣的
  3. 您必须获取给定文件的几何属性名称
  4. 协调系统内容-您在帖子中指定了纬度/经度,但是GIS可能要复杂得多。通常,我指向您的数据是地理数据wgs​​84,这就是我在此处设置的数据。但是,如果不是这种情况,则需要确保以正确的坐标系处理数据。如果这一切听起来像胡言乱语,请在Google周围搜索有关GIS /坐标系/基准/椭球的教程。
  5. 生成坐标几何图形和过滤器是不言自明的。生成的要素集将为空,即如果您的数据为土地覆被,则坐标在水中;或者为空,即相反。

注意:如果您使用一组非常随机的分数来执行此操作,您将经常遇到水,这可能需要一段时间才能达到25k分数。您可能想尝试将点生成的范围比真正随机的范围更好(例如删除大西洋/太平洋/印度洋的大块)。

此外,您可能会发现相交查询过慢。如果是这样,您可能要考虑使用GDAL之类的工具来创建四叉树索引(qix)。不过,我不记得geotools支持哪些索引类型。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/507447.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号