우선, 모든 답변과 의견에 감사드립니다. 불행히도 기존 도구는 최신 버전의 QGIS 및 ArcGIS와 완전히 호환되지 않았습니다. 따라서 @polygeo, @Alexandre의 QGIS 플러그인 및 @Jens의 알고리즘 이름 (4 색 맵)으로 표시된 도구를 사용하여 자체 솔루션을 만들었습니다.
다음은 관심있는 사람들을위한 코드입니다 (ArcGIS의 경우 두 번째 부분은 QGIS에서도 사용될 수 있음).
arcpy.MakeFeatureLayer_management(fc, fc[:-4]+ "_lyr" )
try:
arcpy.AddField_management(fc[:-4] + "_lyr", "color", "SHORT")
except:
print "field alread exists"
arcpy.CalculateField_management(fc[:-4] + "_lyr", "color", "10" , "PYTHON")
arcpy.PolygonNeighbors_analysis(fc[:-4] + "_lyr", fc[:-4] + "_tb.dbf" )
graph = []
cursor=arcpy.da.SearchCursor( fc[:-4] + "_tb.dbf" , ("src_FID","nbr_FID") )
for row in cursor:
graph.append(row)
pols = arcpy.da.UpdateCursor(fc[:-4] + "_lyr", ("OID@","color"))
colored = []
for pol in pols:
nbrs = [ second for first, second in graph if first == pol[0]]
usedcolors = []
for nbr in nbrs:
usedcolors += [second for first, second in colored if first == nbr]
pol[1]=[color for color in range(10) if color not in usedcolors][0]
colored.append(pol)
pols.updateRow(pol)
이 알고리즘은 4 가지 색상 만 사용한다고 보장하지는 않습니다. 솔루션이 존재한다는 것이 입증되었지만 "브 루트 포스"가 필요합니다. 내 경우에는 충분히 작은 7 가지 색상이 있습니다. 솔루션이 발견 될 때까지 스크립트에 추가 루프가있을 수 있지만 수백 개의 맵에 대해해야하며 7 가지 색상이 좋습니다.