【问题标题】:GIS data files converting each address to lat/lon in dbf shape data将每个地址转换为 dbf 形状数据中的纬度/经度的 GIS 数据文件
【发布时间】:2012-11-29 01:49:21
【问题描述】:

我需要来自 GIS 数据的纬度/经度

我有来自 http://www.mngeo.state.mn.us/chouse/land_own_property.html

给出的格式为 .dbf、.prj、.sbn、.sbx、.shp 和 .shx

在.dbf中我看到了

PIN, Shape_area, Shape_len
PARC_CODE   Parcel Polygon to Parcel Point numeric  2  
            and PIN Relationship Code 

在.prj中

PROJCS["NAD_1983_UTM_Zone_15N",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-93.0],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]

我也知道每个县的多边形点

polygons points 
Anoka 129139 129138 
Carver 38134 38133 
Dakota 135925 150294 
Hennepin 422976 446623 
Ramsey 149169 168233 
Scott 55191 55191 
Washington 98915 103915 

我知道边界坐标

-94.012 
-92.732 
45.415 
44.471

似乎有大量适用于 GIS 的软件应用程序 http://en.wikipedia.org/wiki/List_of_geographic_information_systems_software

但是我需要做什么?

我想要每个房子的经纬度

有没有图书馆可以为我做这件事? 我需要什么数据?

【问题讨论】:

标签: orm gis geocoding shapefile


【解决方案1】:

我认为您需要安装一个 GIS 软件。你可以试试开源Qgis

因为,首先您的数据不在经度/纬度(地理)坐标中。 shapefile 的 .prj 部分(是的,所有同名的 .dbf、.prj、.sbn、.sbx、.shp 和 .shx 文件都是 GIS 的一个 shapefile)表示数据位于投影坐标系中NAD 1983 UTM 区 15N。所以,你需要transform你的数据到地理系统。这可以在 GIS 中轻松完成,也可以通过 proj.4 库以编程方式完成。 (在 Qgis 中将 shapefile 添加到项目中,然后在目录中选择它,鼠标右键并选择“另存为...”。它会要求您提供目标坐标系。)注意,您需要决定您希望使用哪个地理坐标,因为您的数据位于北美基准 (NAD 1983) 中,但现在全球最常见的是 WGS 1984。

其次,在 GIS 中,您将看到您的数据,它们是真正的点还是多边形。 (如果你的房子是多边形,你需要在 Qgis 菜单 Vector - Geometry Tools - Polygon Centroids 中获取它们的质心)。

最后,当您真正将房屋作为地理坐标中的点时,您可以获得它们的坐标,例如使用这些问题中的建议Get list of coordinates for points in a layerHow do I calculate the latitude and longitude of points using QGIS

此外,还有一个很好的库可以处理 GIS 矢量数据,OGR,它可以被许多编程语言使用。

【讨论】:

  • 感谢您的帮助,今晚将调查!
  • 好吧,看来我已将数据切换到 WGS1984,我也成功获取了多边形质心...当我导出为 csv 文件时(根据您与 GEOMETRY=AS_XY 的链接)我得到 X ,Y 点,但它们不是 LAT/LON,而是在其他一些数值范围内如果我转到矢量->几何工具->导出/添加几何图层,它也有非纬度格式的 xy,我一定会遗漏一些东西....当我导出它显示 CRS WGS 84
  • 我还确保 onthefly reproject 设置为 on
  • 您以什么格式获取值?可能是十进制度,例如不是 37d30'00"N,而是 37.500000。尝试将导出的点放在 Google 地球(它使用 WGS84)中,看看它们是否在正确的位置。
  • 因此,您将获得 WGS84 基准的 UTM 区域 15 的投影坐标。您需要指定坐标。另存为后的系统,并选择不是UTM区域而是地理系统纯WGS 84。
【解决方案2】:

上面的文件扩展名表明,这些文件是 ESRI 形状文件格式。在 Java 中,您可以使用 GeoTools 库来读取它。

下面的示例显示了第一行,请在 Internet 上搜索更完整的示例。

// init shapefile
        File shpFile = new File(fileName);
        if (!shpFile.exists()) {
            LOGGER.fatal(fileName + " does not exist");
        }

        Map<String, URL> connect = new HashMap<String, URL>();
        FeatureCollection collection = null;
        FeatureIterator iterator = null;
        try {
            connect.put("url", shpFile.toURI().toURL());

            DataStore dataStore = DataStoreFinder.getDataStore(connect);
            String typeName = dataStore.getTypeNames()[0];

【讨论】:

  • 我下载了geotools,但不知道从哪里开始
  • 我更新了代码,更多信息:在互联网上搜索“read ESRI shapefile geotools”
【解决方案3】:

“I want the lat, lon of each house”暗示你要做的是名为geocoding的过程。您可以使用一些服务,有些是免费的(用于有限用途),有些不是。您可以从查看List of geocoding systems 开始了解从哪里开始。我认为您不想从学习 GIS 或 shapefile 开始,而是要提取您尝试进行地理编码的地址。

您可以通过计算每个地块的质心来估算每个房屋的纬度/经度。您可以通过计算每个地块的边界矩形的质心来更粗略地估计每个房屋的纬度/经度。其中任何一个都需要提取地块坐标。如果您为明尼苏达州的每所房子都这样做,您将处理大量数据。地理编码服务会更便宜。 Census Geocoder 可能会有所帮助。

【讨论】:

    猜你喜欢
    • 2021-04-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多