30
2020
06

使用basemap加载shp文件绘制地图

下载安装 pyproj和basemap
import matplotlib.pyplot as plt
from mpl_toolkits.basemap import Basemap
plt.figure(figsize=(12, 8))
plt.subplots_adjust(left=0.08, bottom=0.08, right=0.95, top=0.95, wspace=0.3, hspace=0.2)
m = Basemap(llcrnrlon=92, llcrnrlat=32, urcrnrlon=109, urcrnrlat=43)
m.readshapefile('../shp/县级线图', 'gs')
plt.savefig('../data/县级线图.png')
plt.show()
10
2020
06

python批量shp文件转json文件

任务说明:需要将shp文件转换为json坐标数据文件,然后加载到地图中,使用python中的pyshp批量完成

第一步:安装pyshp

pip install pyshp

第二步:编写代码

import os
import codecs
import shutil
import shapefile


def shp2json(fn_in, fn_out):
    shps = shapefile.Reader(fn_in)
    # print(shps.shapeRecord())
    i_len = len(shps.shapes())
    print(shps.shpLength)
    print('len:%s' % i_len)

    for i_index in range(i_len):
        fn_out_temp = fn_out
        if i_len > 1:
            fn_out_temp = fn_out[:-5] + '_' + str(i_index + 1) + '.json'
        if os.path.exists(fn_out_temp):
            print('find:%s' % fn_out_temp)

        s = '{"data":[\n%s\n]}'
        s_data = ''
        r = shps.shape(i_index)
        print('shapeTypeName:%s' % r.shapeTypeName)
        ls_p = r.points
        print('point count:%s' % len(ls_p))
        i = -1
        for p in ls_p:
            i += 1
            # print(p[0])

            if i > 0:
                s_data += ',\n'
            s_data += '[%s,%s]' % (p[0], p[1])

        s = s % s_data

        f = open(fn_out_temp, 'w')
        f.write(s)
        f.close()
        print('save:%s' % fn_out_temp)
10
2020
06

python调用ArcGIS批量生成缓冲区(多边形等距离放大)

任务说明:需要对地图文件进行要素转面,绘制缓冲区,最后面转线,需要处理的文件有一百多个,手工处理费时费力,写一个脚本,批量自动转换

import os
import time
import arcpy
from arcpy import env

readme = '''批量绘制三级防御圈v1.0.1'''
'''
运行环境ArcGis10.7,python版本2.7
'''


# 要素转面
def l2a(fn_in, fn_out):
    if os.path.exists(('%s.shp' % fn_out).decode('utf-8')):
        print('find:%s.shp' % fn_out)
        return

    if not fn_in.endswith('.shp'):
        fn_in += '.shp'
    arcpy.FeatureToPolygon_management(fn_in, fn_out, "", "NO_ATTRIBUTES", "")
09
2020
04

python编程练习题

import re
import requests

# 题目地址 http://www.pythonchallenge.com
url = 'http://www.pythonchallenge.com/pc/def/%s.html'


# http://www.pythonchallenge.com/pc/def/0.html
# 2的38次方
def q0():
    key = 2 ** 38
    print('Q0\nkey:%s' % key)
    print(url % key)
20
2020
03

使用lftp命令自动同步文件

# 安装
yum install lftp
13
2020
02

python中time和datetime的常用操作

def demo_time():
    # 时间戳
    print(time.time())
    # 1557472133.02831

    # 计算代码执行时间
    t_begin = time.time()
    # 延时
    time.sleep(0.1)
    t = time.time() - t_begin
    print('used time %0.3f' % t)
    # used time 0.101
17
2020
01

pycharm自动生成html代码

在空白html文件中输入!,然后按TAB,即可自动生成html模板

html.gif

31
2019
10

python输出详细异常信息

import traceback
try:
    print(1/0)
except Exception as e:
    print(e.args)
    print(traceback.format_exc()
15
2019
08

使用python将xlsx转换成xls

import pandas as pd
data_xls = pd.read_excel('1.xlsx')
data_xls.to_excel('1.xls')
08
2019
07

excel转sql工具

#!/usr/bin/python  
# coding=gbk  

import os
import time
import datetime
import xlrd
import sys

s_version = "1.0.8"
readme = '''
.xls file convert .sql file
    water
    2019-07-08
    version: %s
说明:
    xls2sql [-r rows] [-v/--version] [-h/--help] file.xls
        -r rows         指定记录的开始位置
        -v/--version    版本
        -h/--help       帮助
    1. 工作表名称为表名;
    2. 第1行为字段名;
    3. 第2行为字段类型;
    4. 第2~(rows-1)行为附加数据,需要使用参数-r rows(rows不能小于3);
    5. 第rows行开始为记录;
''' % s_version