Làm cách nào để tạo Bản đồ trang của các trang có cùng khu vực được hiển thị nhưng các lớp khác nhau được bật / tắt?


9

Trong ESRI, Sách bản đồ phù hợp nhất cho một loạt các tính năng mà mỗi tính năng có được trang riêng của chúng. Nó cho phép bạn chọn một tính năng và tạo Trang sách bản đồ cho từng tính năng bao gồm mọi thông tin bổ sung bạn muốn thêm vào mỗi trang thông qua văn bản động, biểu đồ, v.v.

Có cách nào khác để nói một loạt các trang hiển thị cùng một khu vực CHÍNH XÁC nhưng với các lớp khác nhau được bật và tắt không? Chúng tôi có tài liệu Cải thiện Thủ đô mà tôi phải tạo hiển thị Ranh giới Thành phố trên mỗi trang. Một trang có tất cả cảnh sát và trạm cứu hỏa được liệt kê, một trang khác cho thấy các hệ thống nước được đề xuất, một trang khác cho thấy đường cao tốc và đường cao tốc và công việc đang được thực hiện gần hoặc trên chúng ... vv, quảng cáo.

Có cách nào để thiết lập điều này để tôi KHÔNG phải tạo một MXD riêng cho mỗi Trang bản đồ của tài liệu này không?


phiên bản nào của máy tính để bàn? các công cụ đã thay đổi một chút trong mỗi phiên bản.
Brad Nesom

ArcGIS for Desktop Advanced 10.2.2
Randomblink

Câu trả lời:


10

Tôi đã có thể làm điều này khi tôi có chúng cho ArcGIS 9.3 và nó hoạt động rất tốt. Tôi không biết điều này có hoạt động với ArcGIS 10.0 trở lên như đã nêu trên trang web của họ không nhưng tôi sẽ thử.

ArcMapBook

Chỉnh sửa:
Điều này có thể được thực hiện bằng cách chỉ cần tạo một trang hình chữ nhật cho mỗi tập hợp các lớp được xếp chồng trực tiếp lên nhau. Đặt tên riêng cho từng trang và gán giá trị cho mỗi lớp sẽ được hiển thị trong khung.
Bạn cũng cần gán giá trị thuộc tính cho các mục chỉ xuất hiện trên các trang cụ thể.
Sau đó sử dụng định nghĩa trang để hạn chế các đối tượng thành tên trang.
Trong thuộc tính lớp trên trang Truy vấn định nghĩa> định nghĩa trang.
pagedef

Có một tùy chọn để bật khớp / không khớp và tên trường.
Đã bật
Có rất nhiều khả năng vô tận để mã hóa dữ liệu của bạn hoạt động trong khuôn khổ.
Ngoài ra, nếu bạn có các mục bạn muốn hiển thị trên tất cả các trang mà họ không bật.


1
Điều này vẫn hoạt động với 10.1, 10.2
Brad Nesom

4

Tôi nghĩ rằng các yêu cầu của bạn sẽ được đáp ứng một cách dễ dàng và trực quan nhất bằng cách có một bản đồ duy nhất với tất cả các lớp được bao gồm và sau đó viết một tập lệnh Python đơn giản sử dụng lớp .visible để bật / tắt các lớp trước khi xuất từng trang bằng cách sử dụng ExportToPDF .

PDFDocument sau đó có thể được sử dụng để nối các trang vào một tệp PDF.

Kỹ thuật này được mô tả trong một blog Esri có tên Kết hợp các trang hướng dữ liệu với Python và arcpy.micking cũng bao gồm mã bên dưới.

Ví dụ: bạn có thể tạo một tập bản đồ theo chủ đề với nhiều trang chỉ định một chủ đề khác nhau trên mỗi trang. Ví dụ sau đây phóng to một bưu kiện đã chọn, bật tắt khả năng hiển thị lớp khác nhau và xuất bố cục cho nhiều chủ đề để tạo báo cáo bưu kiện với bản đồ đất, bản đồ lũ lụt và bản đồ phân vùng:

import arcpy, os

#Specify output path and final output PDF
outPath = r”C:MyProjectoutput\”
finalPdf = arcpy.mapping.PDFDocumentCreate(outPath + “ParcelReport.pdf”)

#Specify the map document and the data frame
mxd = arcpy.mapping.MapDocument(r”C:MyProjectMyParcelMap.mxd”)
df = arcpy.mapping.ListDataFrames(mxd, “Layers”)[0]

#Select a parcel using the LocAddress attribute and zoom to selected
parcelLayer = arcpy.mapping.ListLayers(mxd, “Parcels”, df)[0]
arcpy.SelectLayerByAttribute_management(parcelLayer, “NEW_SELECTION”, “”LocAddress” = ’519 Main St’”)
df.zoomToSelectedFeatures()

#Turn on visibility for each theme and export the page
lyrList = ["Soils", "Floodplains", "Zones"]
for lyrName in lyrList:
     lyr = arcpy.mapping.ListLayers(mxd, lyrName, df)[0]
     lyr.visible = True

     #Export each theme to a temporary PDF and append to the final PDF
     tmpPdf = outPath + lyrName + “_temp.pdf”
     if os.path.exists(tmpPdf):
          os.remove(tmpPdf)
     arcpy.mapping.ExportToPDF(mxd, tmpPdf)
     finalPdf.appendPages(tmpPdf)

     #Turn off layer visibility and clean up for next pass through the loop
     lyr.visible = False
     del lyr, tmpPdf
del mxd, df, finalPdf

Sẽ có một cách để làm điều này cho một số lượng lớn các shapefile? Tôi chưa bao giờ thực sự sử dụng Python, nhưng tôi cho rằng lyrList có các lớp sẽ được chuyển qua. Tôi có 121 lớp khác nhau, với các tên như DA_1, DA_2, DA_3, v.v ... Có cách nào để tải chúng mà không đặt tên riêng không?
Người lập bản đồ im lặng

@TheSilentCartogologists Danh sách các độ trễ của bạn có thể miễn là bạn muốn. Nó sẽ cần chứa tên của những người bạn muốn tạo PDF. Có thể có nhiều cách khác nhau mà những cái tên đó lọt vào danh sách.
PolyGeo
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.