Java 读取、表示和渲染地图数据的最佳方式是什么?
我有兴趣编写一个简单的导航应用程序作为宠物项目。在搜索免费地图数据后,我选择了2007年的Line/Shapefile地图数据。数据被分割成各个县的zip文件,我下载了我所在地区的单个县地图数据 将此地图数据读入可用格式的最佳方式是什么? 我应如何:Java 读取、表示和渲染地图数据的最佳方式是什么?,java,.net,graphics,rendering,maps,Java,.net,Graphics,Rendering,Maps,我有兴趣编写一个简单的导航应用程序作为宠物项目。在搜索免费地图数据后,我选择了2007年的Line/Shapefile地图数据。数据被分割成各个县的zip文件,我下载了我所在地区的单个县地图数据 将此地图数据读入可用格式的最佳方式是什么? 我应如何: 读入这些文件 解析它们-正则表达式还是一些已经可以解析这些形状文件的库 将数据加载到我的应用程序中-我是否应该将点直接加载到内存中的某个数据结构中?使用小型数据库?一旦关闭地图数据的应用程序,我就不需要持久性。用户可以再次加载Shapefile
- 读入这些文件
- 解析它们-正则表达式还是一些已经可以解析这些形状文件的库
- 将数据加载到我的应用程序中-我是否应该将点直接加载到内存中的某个数据结构中?使用小型数据库?一旦关闭地图数据的应用程序,我就不需要持久性。用户可以再次加载Shapefile
- 将纬度/经度点转换为屏幕坐标?-据我所知,Shapefile使用经度和纬度作为其点。所以很明显,我必须以某种方式将这些坐标转换为屏幕坐标,以显示地图特征
- 以可以轻松旋转和缩放整个地图的方式渲染地图数据(道路、边界等的一系列多段线)
- 将整个地图渲染为一系列“平铺”,以便仅渲染查看区域内的要素/线
任何对我读取这些文件的最佳方式、如何在程序中表示它们(数据库、内存数据结构)以及如何在屏幕上渲染(旋转/缩放)地图数据有一定经验和见解的人都将不胜感激
编辑:为了澄清,我不想使用任何谷歌或雅虎地图API。同样,我不想使用OpenStreetMap。我正在寻找一种比利用那些API/程序更为从头开始的方法。这将是一个桌面应用程序。是一个用于WinForms和ASP.NET的开源.NET 2.0映射引擎。这可能提供您需要的所有功能。它处理最常见的GIS矢量和光栅数据格式,包括ESRI Shapefile。您还可以使用Microsoft的可视化地球地图应用程序和api或使用Google的api。我一直使用ESRI产品进行商业编程,但没有使用过那么多开放api 另外,你可能想看看Maker!和发现者!它们是相对较新的项目,但我认为它们是免费的。可能在嵌入数据方面受到限制。可以在这里找到
问题是,空间处理在非商业规模上是相当新的。当我给出这个答案时,这个问题被标记为 “在.Net中使用多段线渲染形状文件(地图数据)的最佳方法是什么?” 现在这是一个不同的问题,但我把我的答案留给原来的问题 我写了一个.net版本,可以画画 矢量数据(例如来自 在c#中使用普通GDI+的shp文件。信息技术 很有趣 原因是我们需要 处理不同版本的 几何图形和属性有很多 提供更多信息,以便我们能够 不使用商业地图组件或 一个开源的 这样做的主要原因是 建立一个视口并 平移/变换WGIS84坐标 缩小规模,GDI+x,y 坐标和投影等待 如果你真的需要责备的话 解决办法是:
- 地理空间服务器,如mapserver、geoserver、degree(开源)
- 类似openlayers的javascript制图库(参见
web上有很多使用此解决方案的示例一个解决方案是使用MapXtreme。它们有用于Java和C#的API。API能够加载这些文件并呈现它们 对于Java: 对于.NET: 我在一个桌面应用程序中使用了这个解决方案,效果很好。它提供的不仅仅是呈现信息
现在从头开始做这件事可能需要相当长的时间。他们确实有一个评估版本,你可以下载。我认为它只是在地图上打印“MAPXTREME”作为水印,但它完全可用,否则我会选择使用工具将tiger数据存储在本地 他们有一系列令人印象深刻的工具,尤其是为您提供了导入和使用tiger数据的好方法 您需要了解与postgis交互的工具,很可能是某种 发件人: