Orm 将每个地址转换为dbf形状数据中的lat/lon的GIS数据文件

Orm 将每个地址转换为dbf形状数据中的lat/lon的GIS数据文件,orm,gis,geocoding,shapefile,Orm,Gis,Geocoding,Shapefile,我需要来自GIS数据的Lat/LON 我有来自的数据文件 以 .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

我需要来自GIS数据的Lat/LON

我有来自的数据文件

以 .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软件应用程序

但是我需要做什么呢


我要所有房子的房子

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

上面的文件扩展名显示,这些文件是ESRI Shape文件格式。在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];
//初始化shapefile
文件shpFile=新文件(文件名);
如果(!shpFile.exists()){
LOGGER.fatal(文件名+“不存在”);
}
Map connect=new HashMap();
FeatureCollection=null;
FeatureIterator迭代器=null;
试一试{
connect.put(“url”,shpFile.toURI().toURL());
DataStore DataStore=DataStoreFinder.getDataStore(connect);
字符串typeName=dataStore.getTypeNames()[0];

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

因为,首先,您的数据不是长/纬度(地理)坐标。shapefile的.prj部分(是的,具有相同名称的所有.dbf、.prj、.sbn、.sbx、.shp和.shx文件都是GIS的一个shapefile)表示数据位于投影坐标系NAD 1983 UTM Zone 15N中。因此,您需要将数据保存到地理系统中。这可以在GIS中轻松实现,也可以通过库编程实现。(在Qgis中,将形状文件添加到项目中,然后在目录中选择它,单击鼠标右键并选择“另存为…”请注意,您需要确定所需的地理坐标,因为您的数据位于北美基准面(NAD 1983),但目前全球最常见的是WGS 1984

其次,在GIS中,您将看到您的数据,它们是真正的点,还是多边形(如果您的房子是多边形,您需要在Qgis菜单“向量-几何工具-多边形质心”中获取它们的质心)

最后,当你真的把你的房子作为地理坐标中的点时,你可以得到它们的坐标,例如使用这些问题和建议

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

“我想要每家每户的lat,lon”表明,您想要做的是所谓的过程。您可以使用一些服务,一些是免费的(用于有限的用途)有些不是。你可以先看看地图,了解从哪里开始。我不认为你想从学习地理信息系统或形状文件开始,而只是提取你试图进行地理编码的地址


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

谢谢你的帮助,今晚将进行调查!看来我已将数据切换到WGS1984,我还成功获得了多边形质心…当我导出为csv文件时(根据你与GEOMETRY=as_XY的链接)我得到X,Y点,但它们不是LAT/LON,而是在其他数值范围内,如果我转到vector->GeometryTools->Export/Add Geometry Layers,它也有非LAT-LON格式的xy,我肯定遗漏了什么……当我导出它时,它显示CRS WGS 84I还确保onthefly reproject设置为ONI,以什么格式获得值?它可能是十进制deg例如,rees不是37d30'00“N,而是37.500000。尝试将导出的点放在Google Earth中(它使用WGS84)查看它们是否位于正确的位置。因此,您将获得WGS84基准面的UTM区域15的投影坐标。您需要在“另存为”后指定坐标系,并选择非UTM区域,而是地理系统纯WGS 84。我下载了geotools,不知道从何处开始,尽管我更新了代码,更多信息:搜索internet for“阅读ESRI shapefile geotools“我更新了代码,更多信息:在internet上搜索“阅读ESRI shapefile geotools”可能更适合GIS.SE。如果使用
geopandas
请参阅。