-
Notifications
You must be signed in to change notification settings - Fork 0
/
functions.py
58 lines (35 loc) · 1.67 KB
/
functions.py
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
53
54
# -*- coding: utf-8 -*-
# Import packages
import arcpy
# import utils functions
from util import arcpyPrint, getDissolvedGeometry
# Import config variables
from config import RELATIONAL_DICT as relationalDict
# Define functions
def validate(inputFeature, featureToEraseInput):
arcpyPrint('MESSAGE', 'Initializing validation...')
inputFeatureType = arcpy.Describe(inputFeature).shapeType
featureToEraseInputType = arcpy.Describe(featureToEraseInput).shapeType
possibleInputTypes = relationalDict[featureToEraseInputType]
dissolvedEraseGeometry = getDissolvedGeometry(featureToEraseInput)
dissolvedInputGeometry = getDissolvedGeometry(inputFeature)
featuresDisjoint = dissolvedInputGeometry.disjoint(dissolvedEraseGeometry)
if featuresDisjoint:
message = "The feature classes don't share any geometry relationship."
return [False, message]
if not inputFeatureType in possibleInputTypes:
message = "It's not possible a {} erase a {}".format(featureToEraseInputType, inputFeatureType)
return [False, message]
else:
message = 'Validation process was successfully completed and it can proceed to processing!'
return [True, message]
def erase(inputFeature, featureToEraseInput, outputFeature):
arcpy.CopyFeatures_management(inputFeature, outputFeature)
dissolvedEraseGeometry = getDissolvedGeometry(featureToEraseInput)
uCursor = arcpy.da.UpdateCursor(outputFeature, 'SHAPE@')
for row in uCursor:
row[0] = row[0].difference(dissolvedEraseGeometry)
uCursor.updateRow(row)
del uCursor
message = 'The erase process has been successfully done!'
return [True, message]