您当前的位置: 首页 >  sql

FPGA硅农

暂无认证

  • 2浏览

    0关注

    282博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

geopandas读取shapefile并导入mysql

FPGA硅农 发布时间:2020-08-14 12:52:53 ,浏览量:2

import pymysql
import geopandas



def create_insert_value(gdf,attr_name,geometry_column_name):
    value=[]
    for i in range(len(gdf)):
        list=[]
        for j in range(len(attr_name)):
            if attr_name[j]==geometry_column_name:
                list.append(str(gdf[attr_name[j]][i].wkt))
            else:
                list.append(str(gdf[attr_name[j]][i]))
        value.append(tuple(list))
    return value

def insert_table(table_name,attr_name,geometry_column_name,srid):
    string1=[]
    string2=[]
    for i in range(len(attr_name)):
        string1+=attr_name[i]+","
        if attr_name[i]==geometry_column_name:
            string2+="ST_GeomFromText(%s,{}),".format(srid)
        else:
            string2+="%s,"
    string1[-1]=""
    string2[-1]=""
    s1="".join(string1)
    s2="".join(string2)
    insert_sql="insert into {}({}) values({});".format(table_name,s1,s2)
    return insert_sql

def create_table(attr_name,attr_type,attr_other,table_name):
    string=[]
    for i in range(len(attr_name)):
        string+=attr_name[i]+" "+attr_type[i]+" "+attr_other[i]+",\n"
    string[-2]=""
    s="".join(string)
    create_table_sql="create table if not exists {}(\n{});".format(table_name,s)
    return create_table_sql

def gdf2mysql(host,user,passwd,port,gdf,attr_name,attr_type,attr_other,table_name,db_name,srid,geometry_column_name):
    create_table_sql=create_table(attr_name,attr_type,attr_other,table_name)
    insert_table_sql=insert_table(table_name,attr_name,geometry_column_name,srid)
    values=create_insert_value(gdf,attr_name,geometry_column_name)

    con = pymysql.connect(host=host, user=user,passwd=passwd,port=port,charset='UTF8')
    cur = con.cursor()

    cur.execute("drop database if exists {};".format(db_name))
    cur.execute("create database if not exists {};".format(db_name))
    cur.execute("use {};".format(db_name))
    #cur.execute("drop table if exists {};".format(table_name))
    cur.execute(create_table_sql)
    cur.executemany(insert_table_sql,values)

    con.commit()
    cur.close()
    con.close()




def set_default_value(gdf,value,attr):
    gdf.loc[gdf[attr]            
关注
打赏
1658642721
查看更多评论
0.0424s