Abstract: 1.Common GIS packages in Python
The first is the commonly used GIS packages in Python, which mainly include the following categori...
1.Common GIS packages in Python
The first is the commonly used GIS packages in Python, which mainly include the following categories:
Order number
Name
Function
1
GDAL
Basic package for vector and raster data processing, worthy of the name N0.1
2
GeoPandas
Added excuses for manipulating geospatial data based on Pandas
3
Pyproj
Projection transformation
4
Pysal
Spatial Analysis Function Library
5
Rasterio
Spatial Grid Library Based on GDAL
6
Cartopy
Map Drawing Package
7
Rtree
Spatial index
8
ArcPy
A python package that requires ArcGIS licensing, a python package that can solve most GIS problems, and a nearly omnipotent package
2.Python in ArcGIS
Python in ArcGIS mainly includes ArcPy and ArcGIS API for Python.
ArcPy mainly operates ArcMap or ArcGIS Pro desktop processing tools through Python, providing many functions and classes for processing and querying GIS data.
There are both 2. x and 3. x versions in the ArcGIS system.
The ArcGIS API for Python is mainly used to manage and use spatial resources on the Web side, and to achieve GIS data visualization and analysis,
spatial data management,
user management, etc. on the Web side.
Here, ArcPy is mainly used:
(1)Arcpy core module
ArcPy Main Module:
It is mainly used to provide basic geographical objects,
operate GP tools, and perform basic geographical operations,
such as obtaining attributes,
listing data, etc.
Data Access Module:
Arcpy.da, used for basic data access and editing,
provides cursor functions, and so on.
Drawing module:
Arcpy.mapping or arcpy.mp for drawing
Spatial Analysis Extension Module:
Arcpy.sa, using the GP tool in the spatial analysis extension module
Network Analysis Extension Module:
Arcpy.na, used to use GP tools in the network analysis extension module
(2)Common Classes
(3)Common Functions
Cursor:
SearchCursor、InsertCursor、UpdateCursor
Describe:
Description data, which can return multiple attributes,
such as data type, field, projection information, etc
ListXXX:
Traversing data such as feature classes and grids
Calling the GP tool:
Calling existing GP tools, such as overlay analysis,
clipping, and buffering,
results in different function names.
3.Usage
Field Calculator
Geographic processing column
Standalone scripts
.py format, running directly through the python compiler.
GP Tools
Packaging Python scripts as GeoProcessing tools.
4.Example
(1)SDE automatic backup
1# -*- coding: utf-8 -*-
2import arcpy
3from arcpy import env
4import datetime
5import re
6env.overwriteOutput = True
7
8
9import sys
10reload(sys)
11sys.setdefaultencoding('utf-8') #Solution Coding problem
12
13
14def copy_feature(out_path): #Copy the feature dataset into gdb
15 for fc in featureclasses:
16 if re.match("SDE", str(fc)):
17 print "Copy Feature Class:{0}".format(str(fc))
18 arcpy.FeatureClassToFeatureClass_conversion(fc, out_path, str(fc).split(".")[-1])
19 else:
20 print str(fc) + "Not a feature class"
21
22if __name__ == '__main__':
23 in_path = "F:\\192.168.1.200.sde" #sde Connection file
24 out_path = "F:\\backup\\backup.gdb" # route
25
26 env.workspace = in_path
27 print "Start traversing the database:{0}".format(arcpy.env.workspace.split("\\")[-1]) #Start traversing the database
28 featureclasses = arcpy.ListFeatureClasses() #Traversing feature classes
29 copy_feature(out_path) #Copy Feature Class
30
31 datasets = arcpy.ListDatasets("", "Feature") #Feature Datasets
32 for ds in datasets:
33 print "Start traversing the dataset:{0}".format(str(ds))
34 desc_ds = arcpy.Describe(ds)
35 dataset_out_name = str(ds).split(".")[-1] #Get the name of the feature dataset
36 sr = desc_ds.SpatialReference #Obtain the reference system of the original feature dataset
37 out_path2 = out_path + "\\" + dataset_out_name
38 print "Creating Feature Datasets:{0}".format(dataset_out_name)
39 arcpy.CreateFeatureDataset_management(out_path, dataset_out_name, sr)
40 #Creating Feature Datasets
41 featureclasses = arcpy.ListFeatureClasses(feature_dataset = ds) #Reading Feature Classes in a Feature Dataset
42 copy_feature(out_path2)
43
44
45 print "Backup ended......"
1# -*- coding: utf-8 -*-
2import arcpy
3import os
4
5import sys
6reload(sys)
7sys.setdefaultencoding('utf-8') #Resolve coding issues
8
9
10#mxd Folder Path
11wrkspc = "C:\\Users\\wbg\\Desktop\\mxd"
12#An .ags file connected to a GIS server
13con = "C:\\Users\\wbg\\AppData\\Roaming\\ESRI\\Desktop10.6\\ArcCatalog\\arcgis on 192.168.1.200_6443 (system administrator).ags"
14#The folder name of the publishing server, such as publishing to root, is empty
15folder_name = "test"
16
17def PublishAll(wrkspc):
18 print "Check folder path……"
19 if os.path.isdir(wrkspc) == False:
20 print "The folder path entered is invalid!"
21 return
22 print "traverse folder……"
23 files = os.listdir(wrkspc)
24 for f in files:
25 if f.endswith(".mxd"):
26 mxdPath = os.path.join(wrkspc, f)
27 sddraft=f.split(".")[0]
28 print "publishing: " + mxdPath
29 Createmapsddraft(sddraft, mxdPath)
30 else:
31 continue
def Createmapsddraft(sddraft,mxdPath):
35
36 mapDoc = arcpy.mapping.MapDocument(mxdPath)
37 out_sddraft = wrkspc + sddraft + '.sddraft'
38 sd = wrkspc + sddraft + '.sd'
39 summary = sddraft
40 #tags = 'snadiao, erdiao'
41 # create service definition draft
42 if folder_name:
43 arcpy.mapping.CreateMapSDDraft(mapDoc, out_sddraft, sddraft, 'ARCGIS_SERVER',
44 con, False, folder_name, summary, None)
45 else:
46
47 arcpy.mapping.CreateMapSDDraft(mapDoc, out_sddraft, sddraft, 'ARCGIS_SERVER',
48 con, False, None, summary, None)
49
50
51 analysis = arcpy.mapping.AnalyzeForSD(out_sddraft)
52 # stage and upload the service if the out_sddraft analysis did not contain errors
53 if analysis['errors'] == {}:
54
55 if os.path.exists(sd): os.remove(sd)
56 # Execute StageService
57 arcpy.StageService_server(out_sddraft, sd)
58 # Execute UploadServiceDefinition
59 arcpy.UploadServiceDefinition_server(sd, con)
60 else:
61 # if the sddraft analysis contained errors, display them
62 print analysis['errors']
63
64
65PublishAll(wrkspc)
66
(4)ArcPy + Rest API
1# -*- coding: utf-8 -*-
2#Statistical Service Request Information
3
4import httplib, urllib, urllib2, json
5import time, uuid
6import sys, os
7import getpass
8import csv
9
10def main(argv = None):
11 print "Statistics of site service request information......"
12
13 userName = raw_input("Enter user name:")
14 password = getpass.getpass("Enter password:")
15
16 serverName = raw_input("Enter server name (IP):")
17 serverPort = 6080 #10.7Starting from the default, 6443 port is enabled, which needs to be set, and supports both 443 and 80 ports
18
19 fromTime = 0
20 while fromTime == 0:
21 fromTime =raw_input("Start date of total requests in YYYY-MM-DD HH:MM format (e.g. 2014-05-10 14:00): ")
22 try:
23 fromTime = int(time.mktime(time.strptime(fromTime, '%Y-%m-%d %H:%M'))*1000)
24 except:
25 print ("Unable to parse input. Ensure date and time is in YYYY-MM-DD HH:MM format.")
26 fromTime = 0
27
28 toTime = 0
29 while toTime == 0:
30 toTime = raw_input("End date of total requests in YYYY-MM-DD HH:MM format (e.g. 2014-05-10 18:00): ")
31 try:
32 toTime = int(time.mktime(time.strptime(toTime, '%Y-%m-%d %H:%M'))*1000)
33 except:
34 print("Unable to parse input. Ensure date and time is in YYYY-MM-DD HH:MM format.")
35 toTime = 0