如何将mapinfo文件加载到geopandas中

3 投票
1 回答
3326 浏览
提问于 2025-04-17 21:04

我觉得这个问题可能很简单,但我想知道怎么把mapinfo的mid/mif文件加载到geopandas里?

虽然加载和处理.shp文件很简单,但我不知道该用什么代码:

这是我想尝试的一些数据示例: http://www.stoke.gov.uk/ccm/content/business/general/open-geospatial-consortium-data-catalogue.en

cylpaths = geopandas.GeoDataFrame.from_file(path)  

我试着测试一下几何形状,结果显示:

cylpaths.crs

 Out[15]:
{u'ellps': u'airy',
 u'k': 0.9996012717,
u'lat_0': 49,
u'lon_0': -2,
u'no_defs': True,
u'proj': u'tmerc',
u'towgs84': u'375,-111,431,-0,-0,-0,0',
u'units': u'm',
u'x_0': 400000,
u'y_0': -100000}

但是当我尝试预览数据时,得到的是一个空的数据框:

cylpaths

Out[16]:
Int64Index([], dtype='int64')   Empty GeoDataFrame

我有点不知道接下来该怎么做。

1 个回答

0

我在写这个回答的时候,原问题已经有7年了,但现在说说也许还是有意义的。

现在的 GeoPandas 版本已经可以直接支持 MapInfo 文件了。这是通过 Fiona 这个库来实现的。看看下面的代码片段:

import fiona

# Checks if GeoPandas can read MapInfo files
print('MapInfo File' in fiona.supported_drivers)

上面的代码应该会输出 True。如果是这样,说明你的环境已经准备好可以读取 MapInfo 文件了。如果不是,你可能需要重新安装 Fiona

如果你的环境已经可以使用 MapInfo,你可以用下面的代码来读取 这个示例数据

import geopandas as gpd

tab_file = 'US_CNTY.TAB'

tab_data = gpd.read_file(tab_file)

到这个时候,tab_data 就是一个容易操作的 GeoDataFrame 了。

希望这些信息对你有帮助!

撰写回答