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", "")
02
2020
06

关于这两天网站卡的说明

最近有朋友反馈网站访问速度非常卡,检查后发现访问圈小猫的链接暴增导致带宽被沾满,现已把该链接改为站外地址

TIM截图20200602093757.png

29
2020
05

linux安装tinyproxy

# centos
yum install epel-release
# redhat7
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
yum install tinyproxy
# 配置
vi /etc/tinyproxy/tinyproxy.conf
# 预设是端口8888,根据需要更改
Port 8888 
# 将127.0.0.1改成你自己的IP或注释此行
Allow 127.0.0.1 
#启动服务
systemctl start tinyproxy
# 检查代理是否可用
curl -x 127.0.0.1:8888 www.baidu.com


16
2020
04

nginx配置ssh代理

stream {  
    upstream ssh {
        server  192.168.1.144:22;
    }
    
    server {    
        listen       8022;
        proxy_pass ssh;
        proxy_connect_timeout 1h;
        proxy_timeout 1h;
    }
}
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)
30
2020
03

MySQL出现Waiting for table metadata lock的解决方法

# 0x01 长事物运行,阻塞DDL,继而阻塞所有同表的后续操作
show processlist
# kill掉死锁进程

#0x02 未提交事物,阻塞DDL,继而阻塞所有同表的后续操作
select concat('kill ', trx_mysql_thread_id, ';') from information_schema.innodb_trx;
# kill掉查出的进程

# 0x03 通过show processlist看不到TableA上有任何操作
# 在information_schema.innodb_trx中也没有任何进行中的事务
select * from performance_schema.events_statements_current;
# kill掉查出的进程
20
2020
03

使用lftp命令自动同步文件

# 安装
yum install lftp
16
2020
03

ESP8266 Arduino1.8.12开发环境搭建

0x01. 下载arduinoIDE并解压(请使用1.8.5以上版本)
0x02. 下载Arduino_ESP8266保存到arduino-1.8.xx\hardware\esp8266com\esp8266目录
0x03. 下载esptool保存到arduino-1.8.xx\hardware\esp8266com\esp8266\tools\esptool
0x04. 下载esptool保存到arduino-1.8.xx\hardware\esp8266com\esp8266\tools\pyserial