วิธีรับ coords lat / long ทั้งหมดที่กำหนด shapefile


9

ฉันมี Shapefile ที่มีหลายรูปร่างอยู่ข้างใน

การใช้ MapWindow ฉันสามารถระบุได้ว่ารูปร่างที่ฉันต้องการคือรูปร่างที่มีรูปร่างที่ 19

อย่างที่คุณสามารถบอกได้ว่าฉันมีประสบการณ์น้อยมากกับ GIS โดยทั่วไป แต่ฉันคิดว่าฉันมาถูกที่แล้วเพื่อขอความช่วยเหลือ

สิ่งที่ฉันต้องการคือการดึงพิกัดละติจูด / ลองจิจูดทั้งหมดที่กำหนดรูปร่าง

เป็นไปได้หรือไม่ที่จะทำสิ่งนี้โดยใช้ MapWindow หรือฉันจำเป็นต้องใช้ซอฟต์แวร์อื่นบ้าง?

หากต้องการข้อมูลเพิ่มเติมเพื่อช่วยโปรดแสดงความคิดเห็นและฉันจะอัปเดตโดยเร็วที่สุด

ความช่วยเหลือใด ๆ ที่ชื่นชมเช่นนี้ทำให้ฉันบ้า!

คำตอบ:


10

QGIS สามารถช่วยได้ ตรวจสอบคำตอบนี้ (ส่วน WKT) เป็นคำถามที่คล้ายกัน: การแปลงรูปหลายเหลี่ยมแผนที่ภาษีจาก Shapefile ไปยังตารางหมายเลขแผนที่และพิกัดมุม


ขอบคุณ! ฉันกำลังดาวน์โหลด QGIS ในตอนนี้และฉันจะแสดงความคิดเห็นกลับไปที่ผลลัพธ์!
Zebs

มันง่ายมากที่จะคัดลอกไปที่ text editor คำถามเสริมของฉันคือวิธีแปลงคะแนนเป็น lat, infomration ที่ยาวนาน?
Zebs

2
เปิด shapefile ต้นฉบับ คลิกขวาในคำอธิบายและเลือก "บันทึกเป็น ... " เลือกชื่อไฟล์เป้าหมายและระบบพิกัด EPSG: 4326 (WGS84) โหลด shapefile ใหม่นั้น ตอนนี้คุณสามารถรับพิกัดละติจูด / ลองจิจูดได้
underdark

4

ขอบคุณคุณรู้ไหมว่าฉันสามารถแปลงค่า X, Y เป็น lon / lat ได้อย่างไร ฉันรับรองว่าฉันต้องการการฉายภาพ แต่ฉันสามารถหามันได้จากรูปร่างไฟล์ใช่ไหม
Zebs

@zebs ใช่ฉันรู้ ไม่คุณไม่สามารถทำได้อย่างที่คุณคิด Shapefile มีพิกัดและคุณลักษณะเท่านั้น ไม่มีข้อมูลเมตา บางครั้งข้อมูลเส้นโครงปรากฏขึ้นในไฟล์. prj (แบ่งปันชื่อฐานของ shapefile) ถ้าไม่เช่นนั้นคุณต้องรู้ (ผู้ให้บริการข้อมูลควรบอกคุณ) คุณต้องใช้ซอฟต์แวร์ GIS หรือเทียบเท่าเพื่อยกเลิกการประสานงานพิกัด ซึ่งหมายความว่าการแปลง shapefile ภายใน GISไปเป็น shapefile อื่น (หรือเทียบเท่า) จากนั้นส่งออกพิกัดใหม่
whuber

2

ด้านล่างนี้เป็นวิธีเข้าถึง ESRI เชพไฟล์ละติจูดและลองจิจูดบนหมู่ข้อมูลอื่น ๆ เช่นการอ้างอิงเชิงพื้นที่แอททริบิวต์ฟิลด์ค่าฟิลด์ ฯลฯ โดยใช้ Python รหัสด้านล่างใช้งานได้กับรูปหลายเหลี่ยมและจุดเท่านั้น (เพราะฉันยังไม่ได้เขียนโค้ดสำหรับ polylines) โดยทั่วไปแล้วฉันปูด้วยรหัสบางส่วนที่ฉันพบกระจายอยู่รอบ ๆ ArcGIS Desktop Help 9.3, เพิ่มบางอย่างของตัวเองและรวมเข้าด้วยกันในฟังก์ชั่นเดียว มันถูกเขียนด้วย ArcGIS 9.3 คุณควรจะสามารถส่งผ่านรูปหลายเหลี่ยมรูปร่างหรือจุดรูปร่างไฟล์และตรรกะจะตรงตาม

 def get_shapefile( shape_file ):
    # Import native arcgisscripting module
    import arcgisscripting

    # Create the geoprocessor object
    gp = arcgisscripting.create(9.3)

    # Identify the geometry field
    desc = gp.Describe( shape_file )
    shapefieldname = desc.ShapeFieldName

    # Get shapefile Name
    print
    print 'Shapefile Name: ', desc.Name

    # Get the spatial reference
    spatial_reference = desc.SpatialReference.Name
    print 'Spatial Reference: ', spatial_reference
    print

    # Create search cursor
    rows = gp.SearchCursor( shape_file )
    row = rows.Next()

    # Enter while loop for each feature/row
    while row:

        # Create the geometry object
        feat = row.GetValue(shapefieldname)

        print '*' * 30
        print

        print 'Geometry related Information'
        print
        # Get Geometry Type
        geometry_Type = feat.Type
        print 'Geometry Type: ', geometry_Type

        # Get the area of the feature
        geometry_Area = feat.Area
        print 'geometry_Area; ', geometry_Area

        # Get the centroid for the feature
        geometry_Centroid = feat.Centroid
        print 'geometry_Centroid:', geometry_Centroid

        # Get the extent for the feature
        geometry_Extent = feat.Extent
        print 'geometry_extent: ', geometry_Extent

        print
        print 'Get Attribute Table Information'

        # Get all the fields for the feature class
        fields = desc.Fields

        total_number_of_fields = len( fields )
        print 'Total number of fields: ', total_number_of_fields
        print

        print 'List attribute table related information:'
        print

        field_num_cntr = 0

        # Loop through all the fields in the feature class
        for field in fields:

            print '*'*5, field_num_cntr, '*'*5
            print
            print 'field Type: ', field.Type
            print 'Scale: ', str(field.Scale)
            print 'Precision: ', str(field.Precision)
            print field.Name, '=> ', row.GetValue( field.Name )
            print

            field_num_cntr += 1


        if geometry_Type == 'polygon':

            # Variable to keep track of how many multipart polygons are in
            # featureclass
            partnum = 0 

            # Count the number of points in the current multipart feature
            partcount = feat.PartCount

            print
            print 'Number of polygons in feature class: ', partcount
            print

            # Enter while loop for each part in the feature (if a singlepart feature
            # this will occur only once)
            while partnum < partcount:

                # Print the part number
                print "Part ", str(partnum), "of", partcount, ":"
                print
                part = feat.GetPart(partnum)
                pnt = part.Next()

                pntcount = 0

                # Enter while loop for each vertex
                while pnt:

                    # Print x,y coordinates of current point
                    print 'X coord:', pnt.x, 'Y coord:', pnt.y
                    pnt = part.Next()
                    pntcount += 1

                    # If pnt is null, either the part is finished or there is an interior ring
                    if not pnt:
                        pnt = part.Next()
                        if pnt:
                            print "Interior Ring:"
                partnum += 1

                print
                print 'Number of coordinates in feature class: ', pntcount - 1
                print

        elif geometry_Type == 'point':

            feat = row.GetValue(shapefieldname)

            # Get coords
            pnt = feat.GetPart()

            # Print x,y coordinates of current point object
            print 'X coord:', pnt.x, 'Y coord:', pnt.y


        row = rows.Next()


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