ArcGIS Desktop에서 북마크를 데이터 기반 페이지로 변환 하시겠습니까?


9

우리는 ArcGIS에이 큰 프로젝트를 가지고 있는데,이 맵 / 페이지 사이를 이동하기 위해 북마크를 사용하여 다양한 범위의 맵이 30 개 있습니다.

이제 데이터 기반 페이지를 대신 사용하려고합니다. 문제는 북마크를 데이터 기반 페이지로 변환 할 수 있습니까? 아니면 각지도 범위를 다루는 많은 다각형을 만들어야합니까?

답변:


7

직접적으로는 아니지만 python 및 arcpy.mapping 모듈 로이 작업을 수행 할 수 있습니다. 각 책갈피의 범위를 얻으려면 arcpy.mapping.ListBookmarks 를 사용하십시오 . 그런 다음 각 범위에 대한 기능을 작성하십시오. 이제이 기능 클래스를 데이터 기반 페이지의 인덱스 계층으로 사용할 수 있습니다.


그냥 명확하게하기 위해, ListBookmarks이는 ArcGIS 10.1의 새로운 기능입니다
RyanKDalton

그래도 여전히 10.0입니다 ... 곧 업데이트 될 것 같습니다. 또한 나는 파이썬을 전혀 모른다.
oskarlin

여전히 10.0이고 ArcObjects 및 Python에 익숙한 경우 comtypes로 가져온 ArcObject를 사용하여 책갈피에 액세스 할 수 있습니다. pierssen.com/arcgis/upload/misc/python_arcobjects.pdf
dklassen

3

이 기능을 Out-Of-The-Box 기능으로 사용하려는 데는 혼자가 아닙니다. 귀하의 이름을 다음에 추가하는 것이 좋습니다 ArcGIS Ideas가 3 개 이상 있습니다.

그 동안 누군가가 BookMarks To Feature Class 도구 를 작성하도록 영감을 받았다면 그 결과가 데이터 기반 페이지의 인덱스 피처 클래스로 잘 사용될 것이라고 확신합니다.

나는 이것을 ListBookmarks (arcpy.mapping)에 대한 ArcGIS Online Help의 일부 샘플 코드를 바탕으로 한 훈련 연습으로 끝냈습니다.

import arcpy

# The map with the bookmarks
mxd = arcpy.mapping.MapDocument(r"C:\polygeo\Maps\Bookmarks.mxd")

# Make sure that Training.gdb exists
fileGDBFolder = (r"C:\polygeo")
fileGDBName = ("Training.gdb")
fileGDB = fileGDBFolder + "\\" + fileGDBName
if not arcpy.Exists(fileGDB):
    arcpy.CreateFileGDB_management(fileGDBFolder, fileGDBName)

# The output feature class to be created -
# This feature class will store the bookmarks as features
fcName = "Bookmarks"
outFC = fileGDB + "\\" + fcName

# Create new feature class and add a "Name" field to store the
# bookmark name.  Provide it with the same Spatial reference as
# the data frame in which the bookmarks of the map are stored

if arcpy.Exists(outFC):
    arcpy.Delete_management(outFC)   
arcpy.CreateFeatureclass_management(fileGDB,
                                    fcName, 
                                    "POLYGON", 
                                    spatial_reference=arcpy.SpatialReference(
                                        "Geocentric Datum of Australia 1994"))
arcpy.AddField_management(outFC, "Name", "TEXT", "", "", 50)

# Use arcpy.mapping.ListBookmarks to read bookmark corners and names,
# then arcpy.da.InsertCursor to write arrays of Point geometries from
# that can be written as Polygon geometries to the Shape field of the
# new feature class (with their names).
cur = arcpy.da.InsertCursor(outFC, ["SHAPE@", "Name"])
array = arcpy.Array()
for bkmk in arcpy.mapping.ListBookmarks(mxd):
    array.add(arcpy.Point(bkmk.extent.XMin, bkmk.extent.YMin))
    array.add(arcpy.Point(bkmk.extent.XMin, bkmk.extent.YMax))
    array.add(arcpy.Point(bkmk.extent.XMax, bkmk.extent.YMax))
    array.add(arcpy.Point(bkmk.extent.XMax, bkmk.extent.YMin))
    # To close the polygon, add the first point again
    array.add(arcpy.Point(bkmk.extent.XMin, bkmk.extent.YMin))
    cur.insertRow([arcpy.Polygon(array), bkmk.name])
    array.removeAll()
del bkmk,array,cur,mxd

print "Bookmarks feature class has been created in " + fileGDB

ListBookmarks는 버전 10.2.1에서 손상되었습니다. ESRI는 오늘 사례를 개설했습니다. 도움말 설명서의 [# NIM099667 ListBookmarks (arcpy.mapping) 예제 3 (PolyGeo의 답변과 같은)은 제대로 작동하지 않으며 ArcMap 10.2.1 버전에서 빈 출력을 생성합니다. ]
MapGuyMike

2

북마크를 .dat 파일로 저장 한 다음 해당 파일을 내 작업 공간 도구 로로드 한 다음 내 작업 공간 대화 상자에서 해당 기능을 선택한 다음 추가 버튼 클릭하고 그래픽으로 한맵핑 을 선택 하여 기능 클래스를 작성할 수있었습니다. 그래픽이 있으면 맵 내의 모든 그래픽을 선택하고 그래픽을 기능으로 변환 을 사용하면 데이터 기반 페이지의 기능 클래스를 사용할 수 있습니다. 참고 : 그래픽은 다각형으로 제공되었습니다. 모든 크레딧은 Seneca Francis에게 전달됩니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.