Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/373.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 读取、表示和渲染地图数据的最佳方式是什么?_Java_.net_Graphics_Rendering_Maps - Fatal编程技术网

Java 读取、表示和渲染地图数据的最佳方式是什么?

Java 读取、表示和渲染地图数据的最佳方式是什么?,java,.net,graphics,rendering,maps,Java,.net,Graphics,Rendering,Maps,我有兴趣编写一个简单的导航应用程序作为宠物项目。在搜索免费地图数据后,我选择了2007年的Line/Shapefile地图数据。数据被分割成各个县的zip文件,我下载了我所在地区的单个县地图数据 将此地图数据读入可用格式的最佳方式是什么? 我应如何: 读入这些文件 解析它们-正则表达式还是一些已经可以解析这些形状文件的库 将数据加载到我的应用程序中-我是否应该将点直接加载到内存中的某个数据结构中?使用小型数据库?一旦关闭地图数据的应用程序,我就不需要持久性。用户可以再次加载Shapefile

我有兴趣编写一个简单的导航应用程序作为宠物项目。在搜索免费地图数据后,我选择了2007年的Line/Shapefile地图数据。数据被分割成各个县的zip文件,我下载了我所在地区的单个县地图数据

将此地图数据读入可用格式的最佳方式是什么?

我应如何:

  • 读入这些文件
  • 解析它们-正则表达式还是一些已经可以解析这些形状文件的库
  • 将数据加载到我的应用程序中-我是否应该将点直接加载到内存中的某个数据结构中?使用小型数据库?一旦关闭地图数据的应用程序,我就不需要持久性。用户可以再次加载Shapefile
一旦我读取了Shapefile数据中的数据,渲染地图的最佳方法是什么?

理想情况下,我希望能够读取一个县地图数据形状文件,并在屏幕上渲染所有多边形线,并允许旋转和缩放

我应如何:

  • 将纬度/经度点转换为屏幕坐标?-据我所知,Shapefile使用经度和纬度作为其点。所以很明显,我必须以某种方式将这些坐标转换为屏幕坐标,以显示地图特征
  • 以可以轻松旋转和缩放整个地图的方式渲染地图数据(道路、边界等的一系列多段线)
  • 将整个地图渲染为一系列“平铺”,以便仅渲染查看区域内的要素/线
作为显示地图呈现的TIGER数据示例:

任何对我读取这些文件的最佳方式、如何在程序中表示它们(数据库、内存数据结构)以及如何在屏幕上渲染(旋转/缩放)地图数据有一定经验和见解的人都将不胜感激


编辑:为了澄清,我不想使用任何谷歌或雅虎地图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(开源)
他们可以阅读和提供形状文件(以及许多其他东西)。例如,geoserver(安装时)将美国人口普查局老虎形状文件中的数据作为演示提供

  • 类似openlayers的javascript制图库(参见

web上有很多使用此解决方案的示例

一个解决方案是使用MapXtreme。它们有用于Java和C#的API。API能够加载这些文件并呈现它们

对于Java:

对于.NET:

我在一个桌面应用程序中使用了这个解决方案,效果很好。它提供的不仅仅是呈现信息


现在从头开始做这件事可能需要相当长的时间。他们确实有一个评估版本,你可以下载。我认为它只是在地图上打印“MAPXTREME”作为水印,但它完全可用,否则我会选择使用工具将tiger数据存储在本地

他们有一系列令人印象深刻的工具,尤其是为您提供了导入和使用tiger数据的好方法

您需要了解与postgis交互的工具,很可能是某种

发件人:

现在有几个开源工具与PASGIS一起工作。UDIG项目正在开发一个完全可以读写桌面环境,可以直接与PASGIS一起工作。对于Internet映射,明尼苏达大学的MMASPER可以使用PostGIS作为数据源。GeoTooJava JAVA工具包有PigGIS支持,GeoServer Web FEAT也一样。EASoServer。GRASE支持PostGIS作为数据源。跳java桌面GIS查看器有一个简单的插件来读取PASGIS数据,QGIS桌面有良好的PASGIS支持。PostGIS数据可以使用OGR C++库和命令行工具(和CouCE与捆绑式文件翻转器)导出到多个输出GIS格式。当然,任何与PostgreSQL工作的语言都可以与PostGIS一起工作——Perl、PHP、Python、Tcl、C、C++、爪哇、C*等。 编辑:名称中包含单词SERVER的depite mapserver,这将是