1. 程式人生 > 程式設計 >python建立ArcGIS shape檔案的實現

python建立ArcGIS shape檔案的實現

工作中遇到了一個需求,需要把一段json文字轉化成ArcGIS shape檔案,想來想去,還是考慮用python來實現。

直接上程式碼

import shapefile
import json
import os
 
#shapefile="polygon.shp";
#jsonfile="社群網格.json";
 
def run():
  data=readJSON()
  datalist=data["list"]
  file=shapefile.Writer(target="社群網格.shp",shapeType=shapefile.POLYGON,autoBalance=True);
  #設定屬性資訊
  file.field('nere','C','40') #'SECOND_FLD'為欄位名稱,C代表資料型別為字串,長度為40
  file.field('fileName','40')
  file.field('url','40')
  file.field('photo','40')
  file.field('netGrnereNum','40')
  file.field('color','40')
  file.field('num','40')
  file.field('lat','40')
  file.field('lon','40')
  file.field('togriga','40')
  file.field('gudumji','40')
  file.field('memo','40')
 
  #寫入資料
  for item in datalist:
    nere=item["nere"]
    fileName = item["fileName"]
    url = item["url"]
    photo = item["photo"]
    netGrnereNum = item["netGrnereNum"]
    color = item["color"]
    num = item["num"]
    lat = item["lat"]
    lon = item["lon"]
    togriga = item["togriga"]
    gudumji = item["gudumji"]
    memo = item["memo"]
    polysStr = item["hotinfo"]
    polys=parsing(polysStr);
    #寫入
    file.poly(polys=polys)
    file.record(nere,fileName,url,photo,netGrnereNum,color,num,lat,lon,togriga,gudumji,memo)
    print("-------寫入成功---------")
  #儲存檔案
  file.save("社群網格.shp")
 
#讀取json檔案
def readJSON():
  f = open("社群網格.json","r",encoding="utf-8") # 設定檔案物件
  _str = f.read() # 將txt檔案的所有內容讀入到字串str中
  f.close() # 關閉檔案
  print("讀取json完成")
  if _str.startswith(u'\ufeff'):
    _str = _str.encode('utf8')[3:].decode('utf8')
  data = json.loads(_str,encoding='utf8')
  return data;
  #print(data)
 
#資料解析
def parsing(text):
  data=[]
  strs=text.split(",");
  for line in strs:
    xy=line.split(" ");
    x_y=[float(xy[0]),float(xy[1])]
    data.append(x_y)
  _data=[];
  _data.append(data)
  return _data;
 
 
if __name__=="__main__":
  print("執行程式!!!");
  run();
  print("程式結束!!!");

以上這篇python建立ArcGIS shape檔案的實現就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支援我們。