วิธีเพิ่มการฉายภาพลงใน Shapefile โดยใช้เครื่องมือโอเพนซอร์ส


10

ฉันได้รับรูปร่างบางอย่างโดยไม่มีการฉาย ดังนั้นฉันต้องเพิ่มการฉายภาพเพื่อที่จะแสดงมันบนแผนที่ google ผมพบว่าการประมาณการข้อมูลที่ฉันต้องการที่http://spatialreference.org/ref/epsg/2066

คำถาม:
ฉันจะเพิ่มการฉายภาพโดยใช้วิธีโอเพนซอร์ซได้อย่างไร (ไม่มีสิทธิ์เข้าถึงซอฟต์แวร์ของ ESRI)

ขอบคุณ
คริส

คำตอบ:


16

ใช้ogr2ogrจากGDAL :

ogr2ogr -a_srs EPSG:2066 output.shp input.shp

มีอะไรที่เรียบร้อยเกี่ยวกับ ogr คือมันสามารถใช้ไฟล์ PRJ ที่มีอยู่เป็นอินพุตได้เช่นกัน:

ogr2ogr -a_srs input.prj output.shp input.shp


2
ฉันได้รับข้อผิดพลาดต่อไปนี้เมื่อฉันลองใช้ยูทิลิตี้ด้านบน: "ไม่สามารถแปลงพิกัดได้เลเยอร์ต้นทางไม่มีระบบพิกัดใช้ -s_srs เพื่อตั้งค่า"
ChrisJ

@chris ฉันเขียนการใช้งานที่ไม่ถูกต้องดังนั้นลอง a_srs เพื่อ "กำหนด" การฉายผลลัพธ์
SaultDon

ไม่ทราบว่าคุณสามารถจัดหา. prj ให้กับ -a_srs ได้ ขอบคุณ!
aendrew

7

การฉายในไฟล์. shp อยู่ใน shapefilename.prj มันเป็นไฟล์ข้อความโดยทั่วไปกับข้อมูลที่คุณพบ ดูไฟล์รูปร่างบางไฟล์ของคุณและดูว่าเขียนข้อมูลอย่างไร หรือไฟล์ที่ถูกร้องเรียนน้อยกว่าหากคุณมีไฟล์. shp อื่น ๆ ในโปรเจคเดียวกันให้คัดลอกและเปลี่ยนชื่อให้สอดคล้องกัน


ฉันสร้างไฟล์ด้วยข้อมูลที่ฉันพบทางออนไลน์ แต่มันก็ยังแสดงไม่ถูกต้อง มียูทิลิตี้ที่ฉันสามารถใช้เพื่อสร้างไฟล์การฉายภาพด้วยข้อมูลนี้หรือไม่?
ChrisJ

3
นอกจากนี้คุณยังสามารถใช้spatialreference.orgซึ่งคุณสามารถค้นหาและดาวน์โหลดไฟล์. PRJ จากนั้นเปลี่ยนชื่อเป็นคำนำหน้าเช่นเดียวกับไฟล์. HP
Mike T


2

ดาวน์โหลดไฟล์. prjที่ลิงค์ที่คุณโพสต์แล้วเปลี่ยนชื่อให้ตรงกับไฟล์รูปร่างของคุณ


1
นี่อาจเป็นวิธีที่ง่ายที่สุดเนื่องจากไม่จำเป็นต้องสร้างข้อมูลกลางใด ๆ
SaultDon

0

ค้นหาแนบสคริปต์เล็กน้อยที่เขียนการอ้างอิงการฉายจาก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')

-1

ลองใช้ Geokettle http://www.spatialytics.org/มันอ่าน shapefiles และมีตัวเลือกในการเพิ่ม SRS ในการแปลง มิฉะนั้นให้ใช้ ogr2ogr gui (windows เท่านั้น) เพื่อดู srid

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