通过geopandas Concat多个shapefile

时间:2018-02-19 21:01:53

标签: python geopandas

我正在尝试通过实现以下方法组合多个shapefile:

import geopandas as gpd
import pandas as pd

for i in range(10,56):
    interesting_files = "/Users/m3105/Downloads/area/tl_2015_{}_arealm.shp".format(i)
    gdf_list = []
    for filename in sorted(interesting_files):
        gdf_list.append(gpd.read_file((filename)))
        full_gdf = pd.concat(gdf_list)

其中目录/Users/m3105/Downloads/area包含多个shapefile,例如tl_2015_01_arealm.shptl_2015_02_arealm.shp一直到tl_2015_56_arealm.shp。我想结合所有这些shapefile,避免重复他们的标题。但是,每当我尝试使用上面的代码连接文件时,我都会收到以下错误:

ValueError: Null layer: u''

通常情况下,我知道如何将csv文件连接在一起,但我要注意如何连接shapefile。我非常感谢任何帮助

2 个答案:

答案 0 :(得分:7)

我无法测试这个,因为我没有你的数据,但你想要这样的东西(假设是python 3):

from impala.dbapi import connect
import pandas as pd 
conn = connect(host='zzzzzzzz', port=0001, auth_mechanism='PLAIN', user="xxxxxx", password="yyyyy")

query = "select * from table1 limit 5" 
cur = conn.cursor()
try:
  cur.execute(query)
  rows = cur.fetchall()
for row in rows:
    print (row)

答案 1 :(得分:3)

如果像@Paul H的回答一样使用pandas.concat,则默认情况下不会保留某些地理信息,例如坐标参考系统(crs)。但是,当使用以下方式时,它会起作用:

Dictionary<String, Any>

通过这种方式,地理数据框将根据需要使用CRS