MicroG for Earthquake Sciences

Work better more insights


  • 首页

  • 关于

  • 标签

  • 分类

  • 归档

  • 站点地图

  • 搜索

Datist地震科学版十大特性

发表于 2019-02-24 |
字数统计: 716 字 | 阅读时长 ≈ 2 分钟

数据专家地震科学版(DatistEQ)特性

数据专家地震科学版(DatistEQ)作为地震行业面向业务人员的流程编写、日常数据处理和分析业务平台,新发行的2019Q1版本具有以下十大个特点:

1、免注册授权模式。

通过微信扫描二维码,自动获取一年期授权文件,二次登陆免认证。

2、自定义节点扩展。

支持自定义节点注册到本地工具箱,配合本地Python环境,可以使用Python生态系统中的更多专业分析工具。配合GMT等第三方绘图工具,可以拓展更多平台应用。

3、优化用户体验。

提供多种运行模式,改进了内存回收机制。启动速度更快,新增的内存运行模式加速流程执行,提升用户体验。

4、改版流程商店。

对原有的流程商店改版为:地震共享平台。支持流程、节点、工程和数据源多种类型数据的共享。并且按照地震行业四大学科与业务特点进行了分类。统一微信企业号授权,扫码后自动拥有共享平台授权。

5、支持云端流程存储。

地震共享平台支持私有流程云端存储,适合移动办工和多台终端的协同工作,每个用户享使用私有云存储空间。

6、个性化数据源面板。

根据用户的微信认证单位或学科组标签,自动同步数据源面板配置,用户无需记录和配置数据库参数。

7、同步工程列表。

根据用户的微信认证单位或学科组标签,自动下载工程列表中的流程集合,可以将不同学科组的常用分析流程DMS直接同步到本地,直接开展专业的数据分析工作。

8、改进本地GIS支持。

改进的GIS本地矢量地图模块,增加了全国活动断裂,活动地块边界带,世界地图基础数据等地学行业图形资源。

9、新增行业绘图图版。

新增统计图模板、地球化学三角图版和脚本绘图语言等,支持更多的行业专题图绘制应用。

10、定制化教学模式。

以地震行业日常分析数据案例入手,通过在线视频形式讲解常用节点用法,让用户可以自主学习流程编制方法,并配有专题网站(datist.readthedocs.org),提供常见问题解答。

下载地址:

建议安装到D:\DatistEQ目录,避免C盘可能产生的无写入权限问题。现有版本可以不必卸载,便于对比功能差异。

DatistEQ2019Q1新版软件Download

流程编辑工具:Datist地震科学版

发表于 2019-02-11 |
字数统计: 583 字 | 阅读时长 ≈ 2 分钟

数据专家(Datist)地震科学版简介

Datist,即数据专家,是服务于大数据时代场景式(Context)数据治理与融合的工具。该软件能够根据用户场景需求组织数据与加工业务流程,通过可视化的节点与函数的组合来完成数据的获取、组织、整合、提纯及有形化表达。Datist地震科学版是经过17-18年两年的实践积累,由地震会商技术系统项目组和长安大学专门为地震行业数据分析而研发的一个独立产品,凡是在地震科研助手微信企业号中的成员,下载安装包后,都可以通过扫描二维码的方式,自动获得授权文件,免费使用。

数据专家的基本原理就是把数据处理过程中涉及的处理方法抽象成一个个的节点之间的连接网络,来解决业务系统构建中的各种问题。而Datist地震科学版为行业用户提供了一个开放的平台,允许用户自定义组建自己的数据处理系统,完成特定的数据分析、处理任务。

大家看完地震会上技术系统培训视频第一集,如果对流程编辑感兴趣,请在开始学习第二到四集培训视频之前下载Datist地震科学版软件,并一起跟着视频的例子来学习流程编辑工具的用法。

1、特点:

  • 针对地震行业特点,进行多项针对性的优化;

  • 支持自定义节点开发,方便扩展;

  • 支持微信扫描二维码自动授权模式;

  • 优化编译程序和系统设置,启动和运行速度加快;

  • 优化后的绘图、GIS插件;

  • 新增地震行业常用矢量底图数据。

更多信息请查阅Datist官方文档

2、安装步骤:

  • 第一步:下载后安装,第一次登陆,请打开企业微信进入“地震科研助手”,通过扫描二维码自动获取授权文件

Alt text

  • 第二步:进入程序界面后,进入“帮助”菜单,点击“关于”,授权信息如下图所示

Alt text

3、下载地址:

软件Download地址

地震会商系统视频培训教程之五

发表于 2019-02-10 |
字数统计: 145 字 | 阅读时长 ≈ 1 分钟

第1季第5集-现代化软件开发与可持续的集成方法

  • 难度:一般
  • 时长:约35分钟
  • 对象:业务人员
  • 演示例子:无

要点提示:1、DevOps的软件开发理念;2、Python语言与Github仓库;3、Geoist开源项目计划。

知识点:

  • 1、DevOps开发理念vs瀑布式开发,敏捷式开发工具;
  • 2、Python与Anaconda集成环境;
  • 3、Github仓库的使用,管理你的代码;
  • 4、CI/CD的实现方法;
  • 5、地学家软件包计划,如何参与Geoist软件包开发。

视频教程PPT下载

地震会商系统视频培训教程之四

发表于 2019-02-09 |
字数统计: 127 字 | 阅读时长 ≈ 1 分钟

第1季第4集-学会利用“轮子”来帮助你完成更多工作

  • 难度:较难
  • 时长:约50分钟
  • 对象:业务人员
  • 演示例子:有

要点提示:1、第三方工具集成方法;2、前兆数据处理与曲线绘制;3、自定义节点开发方法。

知识点:

  • 1、流程变量、eCharts与GMT6.0集成
  • 2、Python语言与自定义节点
  • 3、自定义节点开发介绍

视频教程PPT下载
演示流程实例DMS下载

地震会商系统视频培训教程之三

发表于 2019-02-08 |
字数统计: 120 字 | 阅读时长 ≈ 1 分钟

第1季第3集-让流程开始工作的方法

  • 难度:一般
  • 时长:约45分钟
  • 对象:列装单位的负责人和业务人员
  • 演示例子:有

要点提示:1、地震目录的分析方法;2、GIS与空间分析功能;3、底图的配置与修改。

知识点:

  • 1、地震目录分析实例
  • 2、GIS与空间分析方法
  • 3、小技巧:节点案例与流程商店

演示流程实例DMS下载

地震会商系统视频培训教程之二

发表于 2019-02-07 |
字数统计: 197 字 | 阅读时长 ≈ 1 分钟

第1季第2集-如何设计你自己的工作流程?

  • 难度:容易
  • 时长:约40分钟
  • 对象:列装单位的负责人和业务人员
  • 演示例子:有

要点提示:1、流程体系与工作流编辑器,Datist数据科学版获取、安装和环境特点;2、常用节点介绍;3、应用场景(数据绘图与可视化、数据统计与预处理、GIS与地震目录分析)。

知识点:

  • 1、流程设计:Datist数据科学版安装和环境特点
  • 2、节点用法:Datist数据科学版常用节点介绍
  • 3、实例分析:数据绘图与可视化、数据统计与预处理、GIS与地震目录分析

视频教程PPT下载
演示流程实例DMS下载

地震会商系统视频培训教程

发表于 2019-02-03 |
字数统计: 154 字 | 阅读时长 ≈ 1 分钟

第1季第1集-地震分析会商技术系统是什么?

  • 难度:容易
  • 时长:25-30分钟
  • 对象:列装单位的负责人和业务人员
  • 演示例子:无

要点提示:地震分析会商系统的缘起、设计、定位、组成和特点-20分钟;你必须知道的一些资源获取方法和学习方式(地震科研助手、小G、Datist流程设计软件)。

知识点:

  • 1、地震信息化的核心是业务信息化
  • 2、去中心化的运行理念
  • 3、宽平台、厚技术、微应用

视频教程PPT下载

鲁甸地震科技产品

发表于 2019-01-26 |
字数统计: 40 字 | 阅读时长 ≈ 1 分钟

翻出几年前做的一段视频,新年开始准备继续从操旧业了…

鲁甸地震后的一些科技产品

视频下载

九大工程项目设计

发表于 2018-12-11 |
字数统计: 11 字 | 阅读时长 ≈ 1 分钟

今天在台网中心集中工作

Python绘图实践记录

发表于 2018-11-30 |
字数统计: 1,994 字 | 阅读时长 ≈ 11 分钟

用Python进行数据分析少不了绘图工具matplotlib

  • matplotlib是免费的,首先,应该确保环境已经安装matplotlib,numpy, mpl_toolkits,具体怎么做应该不用说了吧!

matplotlib是Python常用的数据绘制包。它基于numpy的数组运算功能。matplotlib绘图功能强大,可以轻易的画出各种统计图形,比如散点图,条行图,饼图等。matplotlib常与numpy和scipy相配合,用于许多研究领域。

二维绘图

  • 基本图形绘制
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
import numpy as np
import matplotlib.pyplot as plt

x = np.linspace(0,10,1000)
y = np.sin(x)
z = np.cos(x)
# 配置
plt.figure(figsize=(8,4)) # 框的大小
plt.plot(x,y,label='$sin(x)$')
plt.plot(x,z,'b--',label='$cos(x)$') # 蓝色虚线
plt.xlabel("Time(s)")
plt.ylabel("")
plt.title("matplotlib")
plt.ylim(-1.2, 1.2)
plt.legend() # 显示为一个样式
plt.show()

fig = plt.gcf() # 获得当前图标的对象
ax = plt.gca() # 获得子图的对象
print fig
print ax
  • 多轴绘图
1
2
3
4
5
6
7
8
9
#   多轴绘图
# subplot(numRows, numCols, plotNum)

import matplotlib.pyplot as plt

for idx, color in enumerate("rgbyck"):
plt.subplot(320+idx+1, axisbg=color)

plt.show()
  • 不同坐标系
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
import numpy as np
import matplotlib.pyplot as plt

w = np.linspace(0.1, 1000, 1000)
p = np.abs(1/(1+0.1j*w))

plt.subplot(221)
plt.plot(w, p, linewidth=2) # 算术坐标系
plt.ylim(0, 1.5)

plt.subplot(222)
plt.semilogx(w, p, linewidth=2) # x 对数坐标系
plt.ylim(0, 1.5)

plt.subplot(223)
plt.semilogy(w, p, linewidth=2) # y 对数坐标系
plt.ylim(0, 1.5)

plt.subplot(224)
plt.loglog(w, p, linewidth=2) # 对数坐标系
plt.ylim(0, 1.5)

plt.show()
  • 柱状图
1
2
3
4
5
6
7
#   1.txt的文本
>>> data
array([[ 0., 10., 20., 30., 40.],
[ 10., 23., 33., 43., 53.],
[ 20., 83., 23., 55., 33.],
[ 30., 93., 44., 22., 55.],
[ 40., 72., 33., 44., 66.]])
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
import numpy as np
import matplotlib.pyplot as plt

data = np.loadtxt(r"D:\1.txt")
width = (data[1, 0] - data[0, 0])*0.4 # 柱形的宽带为4

# data[:, 0]:所有行数据
# data[:, 1]:所有列数据
plt.figure()
plt.bar(data[:, 0] - width, data[:, 1], width, label='person')
plt.xlim(-width, 40) # x 的取值区间
plt.xlabel("Age")
plt.ylabel("Num")

plt.legend()
plt.show()
  • 散点图
1
2
3
4
5
6
7
8
9
10
11
12
13
14
import numpy as np
import matplotlib.pyplot as plt

plt.figure()
x = np.random.rand(100)
y = np.random.rand(100)
# marker:绘制点的形状和大小,5代表五边形,1是大小
# s的默认值是20
plt.scatter(x, y, s=x*1000, c=y, marker=(5,1), lw=2, facecolor='none')
# marker:绘制点的形状和大小 lw:linewidth facecolor:颜色
plt.xlim(0, 1) # c:cmap不是color,cmap绘制出来是彩图(不同颜色)
plt.ylim(0, 1)

plt.show()

三维绘图(mpl_toolkits)

  • 基本3D图
1
2
3
4
5
6
7
8
#   3D图     
import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D

fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
plt.show()
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D

fig = plt.figure()
ax = fig.gca(projection='3d') # projection='3d' 已经隐性调用了Axes3D

# ax = Axes3D(fig) # 可以加上也可以不加
th = np.linspace(-4 * np.pi, 4 * np.pi, 100)
z = np.linspace(-2, 2, 100)
r = z ** 2 + 1
x = r * np.sin(th)
y = r * np.cos(th)

ax.plot(x, y, z, label='hello') # 立体的
ax.legend()
plt.show()
ax.plot(x, y, label='hello') # 平面的
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D

def randrange(n, vmin, vmax):
return (vmax-vmin)*np.random.rand(n) + vmin

fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')

n = 100
for c, m, zl, zh in [('r', 'o', -50, -25), ('b', '^', -30, -5)]:
xs = randrange(n, 23, 32)
ys = randrange(n, 0, 100)
zs = randrange(n, zl, zh)

ax.scatter(xs, ys, zs, c=c, marker=m)

ax.set_xlabel('x')
ax.set_ylabel('y')
ax.set_zlabel('z')

plt.show()
  • 轮廓图
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import axes3d
from matplotlib import cm

fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')

X, Y, Z = axes3d.get_test_data(0.05) # 生成一系列的测试数据
cset = ax.contour(X, Y, Z,cmap=cm.coolwarm) # contour:生成轮廓图
ax.clabel(cset, fontsize=9, inline=1)
plt.show()

# 修改
cset = ax.contour(X, Y, Z,extend3d=True, cmap=cm.coolwarm) # 颜色的填充
  • 3D柱形图
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
import numpy as np

fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')

for c, z in zip(['r', 'g', 'b', 'y'], (30, 20, 10, 0)):
x = np.arange(20)
y = np.random.rand(20)
cs = [c] * len(x)
cs[0] = 'c'
ax.bar(x, y, zs=z, zdir='y', color = cs)

ax.set_xlabel('x')

plt.show()
  • 绘制曲面
1
2
3
4
5
6
7
8
9
10
11
12
13
14
import numpy as np
from mpl_toolkits.mplot3d import Axes3D
import matplotlib.pyplot as plt

fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')

u = np.linspace(0, 2*np.pi, 100)
v = np.linspace(0, np.pi, 100)
x = 10 * np.outer(np.cos(u), np.sin(v))
y = 10 * np.outer(np.sin(u), np.sin(v))
z = 10 * np.outer(np.ones(np.size(u)), np.cos(v))

ax.plot_surface(x, y, z, rstride=4, cstride=4, color='b')
  • 绘制文字
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
from mpl_toolkits.mplot3d import Axes3D
import matplotlib.pyplot as plt

fig = plt.figure()
ax = fig.gca(projection='3d')

zdirs = (None, 'x', 'y', 'z', (1, 1, 0), (1, 1, 1))
xs = (1, 4, 4, 9, 4, 1)
ys = (2, 5, 8, 10, 1, 2)
zs = (10,3, 8, 9, 1, 8)

for zdir, x, y, z in zip(zdirs, xs, ys, zs):
label = '(%d, %d, %d), dir=%s' % (x, y, z, zdir)
ax.text(x, y, z, label, zdir)

ax.text(9, 0, 0, 'red', color='red')
ax.text2D(0.05, 0.95, "20 text", transform=ax.transAxes)

ax.set_xlim3d(0,10)
ax.set_ylim3d(0,10)
ax.set_zlim3d(0,10)

ax.set_xlabel('X axis')
ax.set_ylabel('Y axis')
ax.set_zlabel('Z axis')

plt.show()

地图绘制(mpl_toolkits.basemap)

  • 基本思路

地图的大小、投影方法等重要信息,是在Basemap()的调用中实现的:
map = Basemap(projection=’ortho’,lat_0=35,lon_0=120,resolution=’l’)
projection参数规定了投影方法。改变投影方法,绘图结果也将非常不同。
城市所在位置是经纬度。我们想要把经纬度对应图像的像素点,需要转换:
x, y = map(lons, lats)
这个语句转换为图像上的位置。
最后,调用绘制散点图的方法scatter():
cs = map.scatter(i,j,s=size,marker=’o’,color=’#FF5600’)
在地图上画出数据。

  • 准备数据
1
2
3
4
5
6
7
8
9
10
11
# 保存到major_city.txt 
# 第一列是城市名,第二列是人口,第三第四列为纬度和经度,最后一列为所在国家。
Shanghai 23019148 31.23N 121.47E China
Mumbai 12478447 18.96N 72.82E India
Karachi 13050000 24.86N 67.01E Pakistan
Delhi 16314838 28.67N 77.21E India
Manila 11855975 14.62N 120.97E Philippines
Seoul 23616000 37.56N 126.99E Korea(South)
Jakarta 28019545 6.18S 106.83E Indonesia
Tokyo 35682460 35.67N 139.77E Japan
Peking 19612368 39.91N 116.39E China
  • 绘图代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
from mpl_toolkits.basemap import Basemap
import matplotlib.pyplot as plt
import numpy as np

#============================================# read data
names = []
pops = []
lats = []
lons = []
countries = []
for line in file("../data/major_city"):
info = line.split()
names.append(info[0])
pops.append(float(info[1]))
lat = float(info[2][:-1])
if info[2][-1] == 'S': lat = -lat
lats.append(lat)
lon = float(info[3][:-1])
if info[3][-1] == 'W': lon = -lon + 360.0
lons.append(lon)
country = info[4]
countries.append(country)

#============================================
# set up map projection with
# use low resolution coastlines.
map = Basemap(projection='ortho',lat_0=35,lon_0=120,resolution='l')
# draw coastlines, country boundaries, fill continents.
map.drawcoastlines(linewidth=0.25)
map.drawcountries(linewidth=0.25)
# draw the edge of the map projection region (the projection limb)
map.drawmapboundary(fill_color='#689CD2')
# draw lat/lon grid lines every 30 degrees.
map.drawmeridians(np.arange(0,360,30))
map.drawparallels(np.arange(-90,90,30))
# Fill continent wit a different color
map.fillcontinents(color='#BF9E30',lake_color='#689CD2',zorder=0)
# compute native map projection coordinates of lat/lon grid.
x, y = map(lons, lats)
max_pop = max(pops)
# Plot each city in a loop.
# Set some parameters
size_factor = 80.0
y_offset = 15.0
rotation = 30
for i,j,k,name in zip(x,y,pops,names):
size = size_factor*k/max_pop
cs = map.scatter(i,j,s=size,marker='o',color='#FF5600')
plt.text(i,j+y_offset,name,rotation=rotation,fontsize=10)

plt.title('Major Cities in Asia & Population')
plt.show()

以上是常用的matplotlib绘图方法,一下子可能很难全部记住,但是没关系,只要记得回来copy即可。

123
SHI CHEN at CEA-IGP

SHI CHEN at CEA-IGP

microg.club

26 日志
1 分类
9 标签
RSS
GitHub E-Mail Google
官方信息站点
  • 重力团队
  • 关于我自己
  • Geoist项目
  • Geoist项目文档
  • 地震会商技术系统
  • 地震科普
  • 数据专家
© 2019 SHI CHEN | Site words total count: 6.9k
由 Hexo 强力驱动
|
主题 — NexT.Gemini v5.1.4
人次 次