GeoPython Tutorial

python安装和基本语法

day 1    a.m.

王帅

课程大纲

# geopython-tutorial


课程大纲如下,
## day1 a.m.
- Slide: https://slides.com/sshuair/python-basic
- Notebook: [./day1_am/python_basic.ipynb](day1_am/python_basic.ipynb)

1. python安装
    - 科学发行版选择(anaconda、 python 3.5+)
    - 包库安装(pip、 conda、 windows难以安装的包库解决方法)
    - IDLE选择(pycharm、jupyter-lab 、vscode、spider、)
2. Python基础语法讲解
    - 数据类型
    - 函数
    - 面向对象
    - 文件读写


## day1 p.m.
- Slide: https://slides.com/cbjing/python-scientific-computing
- Notebook: [./day1_pm/python-scientific-computing](day1_pm/python-scientific-computing.ipynb)

1. 科学计算常用库讲解
    - numpy、scipy、matplotlib
2. 地理相关库详解
    - fiona、shapely、geopandas
3. 实战
    - 写一个文本读写、并处理的工具。
    - 利用geopandas和shapely读取矢量数据并做空间操作。


## day2 a.m.
- Slide: https://slides.com/cbjing/python-imagery
- Notebook: [./day2_am/day2_am.ipynb](day2_am/day2_am.ipynb)

1. 遥感影像数据读写
    - RasterIO、GDAL
2. 遥感影像数据基本处理
    - 影像金字塔建立
    - 合并
    - 栅格计算
    - 色彩调整
    - 裁剪
    - ...


## day2 p.m.
- Notebook: [./day2_pm/machine_learning/house-price.ipynb](./day2_pm/machine_learning/house-price.ipynb)
- Notebook: [./day2_pm/neural_networks.ipynb](./day2_pm/neural_networks.ipynb)

1. 机器学习讲解
    - 以随机森林为例子,结合sklearn讲解房价预测
2. 深度学习讲解
    - 讲解基本CNN原理,简单介绍手写数字识别demo

Python安装

1. 官方版本

2. 科学发行版

  • 解释器和标准库
  • 包含各种常用的科学计算包库(numpy、scipy...)
  • 更强大的第三方包库配置工具
  • 下载地址:https://www.anaconda.com/download/

 

 

Python3

Python2

2020年官方停止对python2的支持

Python运行方式

1. mac & linux

  • 打开终端

2. windows

  • 打开cmd(快捷键:windos + R)
 ✘ ~ > python
Python 3.5.2 |Anaconda custom (x86_64)| (default, Jul  2 2016, 17:52:12)
[GCC 4.2.1 Compatible Apple LLVM 4.2 (clang-425.0.28)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> print('hello world!')
hello world!
>>> 100*12
1200
>>> import math
>>> math.sqrt(25)
5.0
>>> import sys
>>> sys.path
['', '/Users/sshuair/anaconda3/lib/python35.zip', '/Users/sshuair/anaconda3/lib/python3.5', 
'/Users/sshuair/anaconda3/lib/python3.5/plat-darwin', '/Users/sshuair/anaconda3/lib/python3.5/lib-dynload', 
'/Users/sshuair/anaconda3/lib/python3.5/site-packages', '/Users/sshuair/anaconda3/lib/python3.5/site-packages/Sphinx-1.4.6-py3.5.egg',
 '/Users/sshuair/anaconda3/lib/python3.5/site-packages/aeosa', '/Users/sshuair/anaconda3/lib/python3.5/site-packages/dask-0.17.0-py3.5.egg', '/Users/sshuair/deep-learning/torchvision-enhance', '/Users/sshuair/GIS/coord-convert', '/Users/sshuair/imagery/geohey-imagery/g_imagery', '/Users/sshuair/imagery/rio-tiler/rio_tiler', '/Users/sshuair/anaconda3/lib/python3.5/site-packages/gbdx_auth-0.2.4-py2.7.egg', '/usr/local/opt/opencv3/lib/python3.5/site-packages', '/Users/sshuair/anaconda3/lib/python3.5/site-packages/setuptools-27.2.0-py3.5.egg', '/Users/sshuair/deep-learning/tensorflow/models/research/slim', '/Users/sshuair/deep-learning/tensorflow/models/research']
>>>
~ > python run_from_file.py
hello world!
12*10=120
25的开方等于: 5.0

IDLE选择

1. 重量级:PyCharm

2. 轻量级:vscodesublime

4. 骨灰级玩家:terminal + vim

3. 科学玩家:jupyter notebook

第三方库的安装

1. conda

2. pip

 ✘  ~  conda install requests
Solving environment: done

## Package Plan ##

  environment location: /Users/sshuair/anaconda3

  added / updated specs:
    - requests


The following packages will be downloaded:

    package                    |            build
    ---------------------------|-----------------
    glob2-0.6                  |   py35hdef87b6_0          17 KB  defaults
    openssl-1.0.2o             |       h26aff7b_0         3.4 MB  defaults
    certifi-2018.4.16          |           py35_0         142 KB  defaults
    pysocks-1.6.8              |           py35_0          22 KB  defaults
    urllib3-1.22               |   py35he002d57_0         156 KB  defaults
    chardet-3.0.4              |   py35h16a84c2_1         190 KB  defaults
    conda-verify-2.0.0         |   py35h2ddbee6_0          21 KB  defaults
    conda-4.5.4                |           py35_0         1.0 MB  defaults
    pycosat-0.6.3              |   py35h745f8c1_0         107 KB  defaults
    cytoolz-0.9.0.1            |   py35h1de35cc_0         342 KB  defaults
    idna-2.6                   |   py35h01aacb0_1         123 KB  defaults
    requests-2.18.4            |   py35h0d65e6b_1          92 KB  defaults
    setuptools-39.1.0          |           py35_0         563 KB  defaults
    conda-build-3.10.2         |           py35_0         431 KB  defaults
    ca-certificates-2018.03.07 |                0         124 KB  defaults
    ------------------------------------------------------------
                                           Total:         6.7 MB

The following NEW packages will be INSTALLED:

    ca-certificates: 2018.03.07-0         defaults
    certifi:         2018.4.16-py35_0     defaults
    chardet:         3.0.4-py35h16a84c2_1 defaults
    conda-verify:    2.0.0-py35h2ddbee6_0 defaults
    glob2:           0.6-py35hdef87b6_0   defaults
    pysocks:         1.6.8-py35_0         defaults
    urllib3:         1.22-py35he002d57_0  defaults

The following packages will be UPDATED:

    conda:           4.5.2-py35_0         conda-forge --> 4.5.4-py35_0           defaults
    conda-build:     2.0.2-py35_0         defaults    --> 3.10.2-py35_0          defaults
    cytoolz:         0.8.0-py35_0         defaults    --> 0.9.0.1-py35h1de35cc_0 defaults
    idna:            2.1-py35_0           defaults    --> 2.6-py35h01aacb0_1     defaults
    openssl:         1.0.2j-0             defaults    --> 1.0.2o-h26aff7b_0      defaults
    pycosat:         0.6.1-py35_1         defaults    --> 0.6.3-py35h745f8c1_0   defaults
    requests:        2.13.0-py35_0        defaults    --> 2.18.4-py35h0d65e6b_1  defaults
    setuptools:      27.2.0-py35_0        defaults    --> 39.1.0-py35_0          defaults

Proceed ([y]/n)?

2. 源码安装

如何解决安装速度慢的问题:替换默认镜像源
https://mirrors.tuna.tsinghua.edu.cn/

  • conda install [package]
  • 完美解决包括之间互相依赖
  • 地理包库的最佳安装选择
  • pip install [package]
  • 最早的python包库管理方案
  • 包库数量众多
  • python setup.py install

windows 下复杂库的安装:http://www.lfd.uci.edu/~gohlke/pythonlibs/

第三方库的安装

Python基本语法

基本数据类型

  • 数字
  • 字符串
  • 布尔值
  • 列表(list)
  • 元组(tuple)
  • 字典(dict)
  • 集合(set)

条件判断&迭代

age = 3
if age >= 18:
    print('adult')
elif age >= 6:
    print('teenager')
else:
    print('kid')

条件判断

迭代

# 列表循环
list_institute = ['地理所', '遥感所', '湖泊所']
for  item in list_institute:
    print(item)

函数

1. 函数的定义

def my_abs(x):
    if x>=0:
        return x
    else:
        return -x

my_abs(-10)

2. 函数的参数

  • 位置参数
  • 默认参数
  • 可变参数
  • 关键字参数

函数-高级特性

1.列表生成式

# 写列表生成式时,把要生成的元素x * x放到前面,后面跟for循环,就可以把list创建出来
In [1]: lc = [x * x for x in range(1, 11)]
   ...: lc
   ...:
Out[1]: [1, 4, 9, 16, 25, 36, 49, 64, 81, 100]

# 元素过滤
In [2]: [x * x for x in range(1, 11) if x % 2 == 0]
Out[2]: [4, 16, 36, 64, 100]

2. 生成器

In [3]: # 生成器定义
   ...: g = (x * x for x in range(10))
   ...: g
   ...:
Out[3]: <generator object <genexpr> at 0x106346f10>


In [4]: next(g)
Out[4]: 0

3. map函数

def f(x):
    return x * x

r = map(f, [1, 2, 3, 4, 5, 6, 7, 8, 9])

4. 匿名函数

f = lambda x: x * x
list(map(f, [1, 2, 3, 4, 5, 6, 7, 8, 9]))

模块

1. 标准库(python官方自带)

2. 第三方库(第三发开发者)

安装方法:
pip install [packagename] 
conda install [packagename]


import requests
rsponse = requests.get('http://www.baidu.com')
rsponse.content
In [6]: import math

In [7]: math.sqrt(123)
Out[7]: 11.090536506409418

In [8]: math.cos(1)
Out[8]: 0.5403023058681398

In [9]: import sys

In [10]: sys.path
Out[10]:
['',
 '/Users/sshuair/anaconda3/bin',
 '/Users/sshuair/anaconda3/lib/python35.zip',
 '/Users/sshuair/anaconda3/lib/python3.5',
 '/Users/sshuair/anaconda3/lib/python3.5/plat-darwin',
 '/Users/sshuair/anaconda3/lib/python3.5/lib-dynload',
 '/Users/sshuair/anaconda3/lib/python3.5/site-packages',
 '/Users/sshuair/anaconda3/lib/python3.5/site-packages/Sphinx-1.4.6-py3.5.egg',
 '/Users/sshuair/anaconda3/lib/python3.5/site-packages/aeosa',
 '/Users/sshuair/anaconda3/lib/python3.5/site-packages/dask-0.17.0-py3.5.egg',
 '/Users/sshuair/deep-learning/torchvision-enhance',
 '/Users/sshuair/GIS/coord-convert',
 '/Users/sshuair/imagery/geohey-imagery/g_imagery',
 '/Users/sshuair/imagery/rio-tiler/rio_tiler',
 '/Users/sshuair/anaconda3/lib/python3.5/site-packages/gbdx_auth-0.2.4-py2.7.egg',
 '/usr/local/opt/opencv3/lib/python3.5/site-packages',
 '/Users/sshuair/anaconda3/lib/python3.5/site-packages/setuptools-27.2.0-py3.5.egg',
 '/Users/sshuair/deep-learning/tensorflow/models/research/slim',
 '/Users/sshuair/deep-learning/tensorflow/models/research',
 '/Users/sshuair/anaconda3/lib/python3.5/site-packages/IPython/extensions',
 '/Users/sshuair/.ipython']

面向对象

1. 类的定义

class Student():
    pass

# 实例化类
tom = Student()

2. 类的初始化

In [11]: class Student(object):
    ...:     def __init__(self, name):
    ...:         self.name = name
    ...: tom = Student('tom')
    ...: tom.name
    ...:
Out[11]: 'tom'

3. 类的方法

In [12]: class Student(object):
    ...:     def __init__(self, name, score):
    ...:         self.name = name
    ...:         self.score = score
    ...:
    ...:     def get_grade(self):
    ...:         if self.score >= 90:
    ...:             return 'A'
    ...:         elif self.score >= 60:
    ...:             return 'B'
    ...:         else:
    ...:             return 'C'
    ...:

In [13]: jake = Student('jake', 90)
    ...: jake.get_grade()
    ...:
Out[13]: 'A'

1

文件读写

1. 文本文件

# 读文件
with open('point.txt', 'r') as f:
    content = f.readlines()
    # processing code

content

#['X,Y,fid\n',
# '116.108215926863,39.7334285851988,0\n',
# '116.109210003139,39.7333587447276,1\n',
#......

# 写文件
with open('out_fn.csv', 'w') as f:
    for item in content:
        f.write(item)

2. 图像文件

from PIL import Image
img = Image.open('image.jpg')
img

img.save('out.jpg')

python-basic

By Shuai Wang

python-basic

python安装和基础语法

  • 1,020