คำตอบ:
ogr2ogr -a_srs EPSG:2066 output.shp input.shp
มีอะไรที่เรียบร้อยเกี่ยวกับ ogr คือมันสามารถใช้ไฟล์ PRJ ที่มีอยู่เป็นอินพุตได้เช่นกัน:
ogr2ogr -a_srs input.prj output.shp input.shp
การฉายในไฟล์. shp อยู่ใน shapefilename.prj มันเป็นไฟล์ข้อความโดยทั่วไปกับข้อมูลที่คุณพบ ดูไฟล์รูปร่างบางไฟล์ของคุณและดูว่าเขียนข้อมูลอย่างไร หรือไฟล์ที่ถูกร้องเรียนน้อยกว่าหากคุณมีไฟล์. shp อื่น ๆ ในโปรเจคเดียวกันให้คัดลอกและเปลี่ยนชื่อให้สอดคล้องกัน
สร้างไฟล์. prj ด้วยชื่อไฟล์เดียวกับไฟล์รูปร่างของคุณ (เช่น foo.prj) เปิดไฟล์ในโปรแกรมแก้ไขข้อความและเพิ่มเนื้อหาของในกรณีนี้http://spatialreference.org/ref/epsg/2066/ PRJ /
ค้นหาแนบสคริปต์เล็กน้อยที่เขียนการอ้างอิงการฉายจากspatialreference.orgลงในไฟล์. prj มันเพิ่มไฟล์ที่ฉายไปยังไฟล์ที่ระบุทั้งหมดในไดเรกทอรี ตัวอย่างเช่นรูปร่างทั้งหมดในไดเรกทอรี E: \. เพียงแค่กังวลเกี่ยวกับรหัส EPSG ของการฉายภาพที่คุณต้องการฝังส่วนขยายของไฟล์ที่คุณต้องการเพิ่มไฟล์การฉายไปยังและไดเรกทอรีที่พวกเขาอยู่ มันจะวนซ้ำผ่านไดเรกทอรีย่อยทั้งหมดดังนั้นควรใช้ด้วยความระมัดระวัง
import os
def getWKT_PRJ (epsg_code):
import urllib.request, urllib.parse, urllib.error
# Access projection information
wkt = urllib.request.urlopen("http://spatialreference.org/ref/epsg/{0}/prettywkt/".format(epsg_code))
decoded = (wkt.read().decode('utf-8'))
# Remove spaces between charachters
remove_spaces = decoded.replace(" ","")
# Place all the text on one line
output = remove_spaces.replace("\n","")
return output
def referencer(folder_path, extension):
for path, subdirs, files in os.walk(folder_path):
for name in files:
file_extension = os.path.splitext(name)[-1]
if(extension in file_extension):
file_path = os.path.join(path,name)
file_name = os.path.splitext(file_path)[0]
prj = file_name + ".prj"
projection = open(prj,"w")
projection.write(epsg)
projection.close()
epsg = getWKT_PRJ("25831")
referencer('E:\Testfolder', '.shp')
ลองใช้ Geokettle http://www.spatialytics.org/มันอ่าน shapefiles และมีตัวเลือกในการเพิ่ม SRS ในการแปลง มิฉะนั้นให้ใช้ ogr2ogr gui (windows เท่านั้น) เพื่อดู srid