java - 使用 GIS 获取单个点的地理信息

标签 java gis geospatial postgis geohashing

我不太确定从哪里开始。我在过去一周才开始研究这个问题,但希望有人能帮助我指明正确的方向。

我的项目的目标是能够获取 geohash,将其解码为纬度和经度,根据一些 GIS 数据检查该点,并找出有关该点的一些信息,例如地形(这是一个主体吗?水?湖泊?海洋?这是山区吗?这是田地吗?)、海拔或其他有用的信息。然后就可以作为启动器显示该信息。

到目前为止我收集到的信息是我需要获得一些免费的 GIS 数据(这是供学校使用的,所以我没有钱!)。我想要世界数据,我在网上找到了一些数据( http://www.webgis.com/terraindata.html ),但我不知道从这里去哪里。我看到了一些工具,例如PostGIS作为数据库。

我目前正在使用 Java 来完成项目的其他部分,因此如果可能的话我想坚持使用 Java。

有人可以帮助我,或者为我指明正确的方向吗?

最佳答案

开始研究PostGIS;它恰好是用 C 语言编写的,但由其他人开发 mostly Java guys ,并支持不错的(免费)Java 工具,例如 uDig .

关于地理空间基础知识:这是一些交互的示例,我觉得您需要开始使用。

您从一个数据源开始,比如免费的 TIGERLINE美国的人口普查数据。使用GDAL您为数据库设置数据格式;通常,您可以将 shapefile、kml 等直接通过管道传输到一个表中,该表将包含一些元数据(地名等)和空间启用的键 geometry column 。这里我真心推荐PostGIS。我的笔记本电脑上有一个这样的人口普查表,以下是在水体示例中如何使用它的方法:

pepe=> \d tl_2009_06075_areawater
   Table "public.tl_2009_06075_areawater"
  Column  |          Type          |
----------+------------------------
 gid      | integer                |
 ansicode | character varying(8)   |
 hydroid  | character varying(22)  |
 fullname | character varying(100) |
 the_geom | geometry               |
Indexes:
    "tl_2009_06075_areawater_pkey" PRIMARY KEY, btree (gid)
Check constraints:
    "enforce_srid_the_geom" CHECK (st_srid(the_geom) = 4269)

记下数字 4269,即几何图形的 SRID .

现在假设您有一个点,例如 -122.492983 37.717753(注意它是经度纬度),由 GPS 输入或其他内容给出。它可能在什么水体中?:

pepe=> select fullname from tl_2009_06075_areawater 
where the_geom &&
ST_GeomFromText('POINT(-122.492983 37.717753)', 4269);

   fullname    
---------------
 Lk Merced
 
 Pacific Ocean

默塞德湖是旧金山的一个地方,我一直路过——它有点像潮汐沼泽,所以也许人口普查局认为它是太平洋的一部分——有趣的是,我不知道这一点!希望这可以帮助您入门。

关于java - 使用 GIS 获取单个点的地理信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3032650/

相关文章:

r - Terra 等效于 raster::stack()?

python - 将完整的 QUEEN 邻居数组保存到 Pysal 中的 CSV(人口普查 block 组)

python - GIS:Python 中的 line_locate_point()

java - 从其他类 Android Java 调用静态方法

java - 在Eclipse上安装Android ADT时出错

Java Dom 获取属性

javascript - 单击其他折线时如何停止将 geojson 折线描边颜色更改为默认值?

gis - 在 netlogo 中使用 2 张 map

c# - 在 UWP MapControl 中将点投影到 3D 地形表面

java - 如何获取xml的命名空间