Làm thế nào để có được tất cả các hợp đồng lat / long xác định một shapefile


9

Tôi có một Shapefile với một vài hình dạng bên trong nó.

Sử dụng MapWindow tôi đã có thể xác định rằng hình dạng tôi cần là hình dạng có hình dạng 19.

Như bạn có thể nói rằng tôi có rất ít kinh nghiệm về GIS nói chung nhưng tôi nghĩ rằng tôi đã đến đúng nơi để yêu cầu giúp đỡ.

Những gì tôi cần là trích xuất tất cả các tọa độ lat / long xác định hình dạng.

Có thể thực hiện việc này bằng MapWindow hay tôi cần sử dụng một số phần mềm khác?

Nếu cần thêm thông tin để giúp đỡ, xin vui lòng bình luận và tôi sẽ cập nhật sớm nhất có thể.

Bất kỳ trợ giúp được đánh giá cao vì điều này đang khiến tôi phát điên!

Câu trả lời:


10

QGIS có thể giúp đỡ. Kiểm tra câu trả lời này (phần WKT) cho một câu hỏi tương tự: Chuyển đổi đa giác bản đồ thuế từ Shapefile sang bảng số bản đồ và tọa độ góc


Cảm ơn bạn! Tôi đang tải xuống QGIS ngay bây giờ và tôi sẽ bình luận lại về kết quả!
Zebs

Nó rất dễ dàng sao chép vào một trình soạn thảo văn bản. Câu hỏi bổ sung của tôi là làm thế nào để chuyển đổi các điểm thành lat, thông tin dài?
Zebs

2
Mở shapefile ban đầu. Nhấp chuột phải vào nó trong phần chú thích và chọn "Lưu dưới dạng ...". Chọn tên tệp mục tiêu và hệ thống tọa độ EPSG: 4326 (WGS84). Tải shapefile mới. Bây giờ bạn có thể nhận được tọa độ lat / lon.
underdark

4

Cảm ơn, bạn có biết làm thế nào tôi có thể chuyển đổi các giá trị X, Y thành lon / lat. Tôi cam kết rằng tôi cần chiếu nhưng tôi có thể lấy nó từ shapefile phải không?
Zebs

@zebs Vâng, tôi biết; không, bạn không thể làm theo cách bạn nghĩ Shapefile chỉ chứa tọa độ và thuộc tính; không có siêu dữ liệu. Đôi khi thông tin chiếu xuất hiện trong tệp .prj (chia sẻ tên cơ sở của shapefile). Nếu không, sau đó bạn chỉ cần biết. (Nhà cung cấp dữ liệu sẽ cho bạn biết.) Bạn cần phần mềm GIS hoặc tương đương để hủy bỏ tọa độ. Điều này có nghĩa là chuyển đổi shapefile trong GIS thành một shapefile khác (hoặc tương đương) và sau đó xuất tọa độ mới của nó.
whuber

2

Dưới đây là cách để truy cập tọa độ vĩ độ và kinh độ của ESRI, trong số các bit thông tin khác, chẳng hạn như tham chiếu không gian, thuộc tính trường, giá trị trường, v.v., bằng Python. Mã dưới đây chỉ hoạt động cho đa giác và điểm (vì tôi không có ý định viết mã cho polylines). Về cơ bản, tôi đã tổng hợp một số mã mà tôi tìm thấy nằm rải rác xung quanh ArcGIS Desktop Help 9.3, thêm một số mã của riêng tôi và đặt nó cùng nhau trong một chức năng. Nó được viết bằng ArcGIS 9.3. Bạn sẽ có thể vượt qua trong một shapefile đa giác hoặc shapefile điểm và logic sẽ điều hướng nó phù hợp.

 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 )
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.