ชุดการส่งออกไฟล์ MXD เป็น PDF โดยใช้ ArcGIS Desktop?


9

Nico Burgerhart ได้สร้างสคริปต์ที่ยอดเยี่ยมที่เรียกว่า "Batch export MXD to PDF" ในปี 2008 http://arcscripts.esri.com/details.asp?dbid=14872 มี แนวคิดใดบ้างที่จะนำไปใช้ใน ArcGIS 10 มีบางอย่างที่ใช้ Python อยู่ใช่ไหม? Data Driven Pages ไม่มีสิ่งใดเทียบได้ที่ฉันหาได้

นี่คือขั้นตอนในไฟล์ข้อความ read me ที่ไม่ได้หลอกลวงด้วยแถบเมนูใหม่ของ ArcGIS 10:

Tool: Batch export MXD to PDF
Purpose: Saves all MXDs in the selected directory to PDFs in the selected output folder
Author: Nico Burgerhart (nicoburgerhart@hotmail.com)
Date: 31 Jan. 2007
INSTALLATION NOTES
------------------
1. Open ArcMap
2. Select Tools > Macro's > Visual Basic Editor
3. Select File > Import file
4. Import BatchExportMXDToPDF.bas
5. Select File > Close and Return to ArcMap
6. Select Tools > Macro's > Macro's
7. Select the BatchExportMXDToPDF mactro
8. Click Run 

คำตอบ:


7

ตอนนี้การส่งออกเอกสารแผนที่เป็น PDF จะรวมอยู่ในโมดูล arcpy.mapping

ตัวอย่างรหัสจาก Esri KB วิธีการ: ส่งออกเอกสารแผนที่เป็น PDF โดยใช้ Python :

for mxd in mxd_list:

    current_mxd = arcpy.mapping.MapDocument(os.path.join(ws, mxd))
    pdf_name = mxd[:-4] + ".pdf"
    arcpy.mapping.ExportToPDF(current_mxd, pdf_name)

สำหรับตัวอย่างกล่องเครื่องมือเพิ่มเติมให้ดูที่การเอ็กซ์พอร์ต MXD เป็น PDFได้ที่ @bteranUFA


ขอบคุณ Mapperz มีคนดีมากมายที่ดูเหมือนว่า .... ได้รับข้อผิดพลาดชื่อไฟล์ Mxd ไม่ถูกต้องด้วยเหตุผลบางอย่างเมื่อใช้ 'ส่งออกเอกสารแผนที่เป็น PDF' มีความคิดอะไรบ้าง? screen shot: i.imgur.com/fOaGp.jpg
sirgeo

คุณมีช่องว่างหรืออักขระพิเศษใน. mdd ของคุณหรือไม่
Mapperz

ใช่ .... ช่องว่างขีดล่างและยัติภังค์ นี่คือตัวอย่างเล็ก ๆ น้อย ๆ : PLR11001200_1101A-BO.mxd 1101A_ LT 314.mxd 1101A_BB 300B.mxd 1101A_BO.mxd คุณคิดว่าฉันจำเป็นที่จะต้องเว้นวรรคและยัติภังค์หรือไม่? ฉันจะให้มันยิงพรุ่งนี้เช้าเมื่อฉันไปทำงานเพื่อทำงานล่วงเวลา
sirgeo

1
ขอบคุณ Mapperz .... มันใช้งานได้ดีจริง ๆ หลังจากลบช่องว่างขีดล่างและยัติภังค์ทั้งหมด
sirgeo

1
ลิงก์เพิ่มเติม (ลิงก์ของ @ Mapperz ไม่ทำงานอีกต่อไป): support.esri.com/technical-article/000012420
gisnside

1

ดูเหมือนว่านี่เป็นโมดูล VBA หากคุณติดตั้ง VBA ด้วย ArcGIS 10 คุณควรจะสามารถใช้งานได้เหมือนกัน (VBA ยังคงรองรับ แต่จะไม่อยู่ในรุ่นถัดไป) วิธีที่ดีกว่าคือเขียนใหม่เป็นส่วนเสริม


ขอบคุณ Jakub มีลิงค์พร้อมคำแนะนำทีละขั้นตอนเกี่ยวกับวิธีการติดตั้ง VBA ด้วย ArcGIS 10 หรือไม่? มีข้อเสนอแนะเกี่ยวกับวิธีเขียนใหม่เป็นส่วนเสริมหรือไม่
sirgeo

1
คุณจะต้องมีไฟล์ลิขสิทธิ์จาก ESRI และ VBA ตัวติดตั้งเป็นหนึ่งในรายการในแผ่นดีวีดีติดตั้งหลัก สำหรับ Add-In (ขออภัยไม่ใช่ Add On) มีบิตของการเรียนรู้กับ VB .NET แต่มันก็คุ้มค่ากับความพยายาม นี่คือลิงค์สำหรับคำแนะนำ: help.arcgis.com/th/sdk/10.0/arcobjects_net/conceptualhelp/ ......
Jakub Sisak GeoGraphics

1

เพิ่มสคริปต์ลงในกล่องเครื่องมือจากนั้นตั้งค่าพารามิเตอร์สองตัวโดยคลิกขวาที่เครื่องมือสคริปต์และพิมพ์ในจอแสดงผลที่ชื่อเช่นภาพด้านล่างและเลือกประเภทข้อมูลของโฟลเดอร์เช่นภาพด้านล่าง: ป้อนคำอธิบายรูปภาพที่นี่

#Export a folder of maps to PDFs at their Map Document set sizes
#Written using ArcGIS 10 and Python 2.6.5
#by: Guest

import arcpy, os

#Read input parameter from user.
path = arcpy.GetParameterAsText(0)

#Write MXD names in folder to txt log file.
writeLog=open(path+"\FileListLog.txt","w")
for fileName in os.listdir(path):
    fullPath = os.path.join(path, fileName)
    if os.path.isfile(fullPath):
        basename, extension = os.path.splitext(fullPath)
        if extension == ".mxd":
            writeLog.write(fullPath+"\n")
            mxd = arcpy.mapping.MapDocument(fullPath)
            print fileName + "\n"
del mxd
print "Done"
writeLog.close()


exportPath =arcpy.GetParameterAsText(1)
MXDread=open(path+"\FileListLog.txt","r")
for line in MXDread:
    #Strip newline from line.
    line=line.rstrip('\n')
    if os.path.isfile(line):
        basename, extension = os.path.splitext(line)
        newName=basename.split('\\')[-1]
        if extension.lower() == ".mxd":
            print "Basename:" +newName
            mxd = arcpy.mapping.MapDocument(line)
            newPDF=exportPath+"\\"+newName+".pdf"
            print newPDF
            arcpy.mapping.ExportToPDF(mxd,newPDF)
            print line + "Export Done"
MXDread.close()
item=path+"\FileListLog.txt"
os.remove(item)
del mxd

0

ดูในชุดเครื่องมือ GP นี้ในศูนย์ทรัพยากร ESRI อาจมีบางอย่างในนั้นสำหรับส่งออกเป็น PDF ในแบทช์


ชอบจิตใจ - ลิงก์เดียวกันกับฉัน
Mapperz

ขอบคุณ Chad ฉันยังคงได้รับข้อผิดพลาดชื่อไฟล์ Mxd ไม่ถูกต้องด้วยเหตุผลบางอย่างเมื่อใช้ 'ส่งออกเอกสารแผนที่เป็น PDF' มีความคิดอะไรบ้าง? screen shot: i.imgur.com/fOaGp.jpg
sirgeo

@Mapperz - D'OH! ความผิดพลาดของฉัน!
Chad Cooper

ได้รับข้อผิดพลาดของชื่อไฟล์ Mxd ไม่ถูกต้องเมื่อใช้ 'ส่งออกเอกสารแผนที่เป็น PDF' มีข้อคิดเห็นหรือไม่ screen shot: i.imgur.com/fOaGp.jpg
sirgeo

0

การสร้างจากการมีส่วนร่วมของ@Guestและ @bteranUFA ฉันได้รวมสคริปต์ python และกล่องเครื่องมือไว้ด้วยกัน มันส่งออก MXD ทั้งหมดจากโฟลเดอร์อินพุตไปยังตำแหน่งที่ส่งออก

จากที่นี่ดาวน์โหลดArcPlus.tbxและScripts\ExportFolder2PDF.pyบันทึกที่ใดก็ได้ที่มีประโยชน์จากนั้นอ่านบันทึกการใช้งานหากจำเป็น

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.