Cara mendapatkan semua lat / long coords yang mendefinisikan suatu shapefile


9

Saya memiliki Shapefile dengan beberapa bentuk di dalamnya.

Menggunakan MapWindow saya telah dapat menentukan bahwa bentuk yang saya butuhkan adalah yang dengan shapeId 19.

Seperti yang mungkin Anda ketahui, saya memiliki sedikit pengalaman dengan GIS secara umum, tetapi saya pikir saya telah datang ke tempat yang tepat untuk meminta bantuan.

Yang saya butuhkan adalah mengekstrak semua koordinat lat / long yang menentukan bentuk.

Apakah mungkin melakukan ini menggunakan MapWindow atau apakah saya perlu menggunakan beberapa perangkat lunak lain?

Jika diperlukan lebih banyak informasi untuk membantu, beri komentar dan saya akan memperbarui secepatnya.

Bantuan apa pun dihargai karena ini membuatku gila!

Jawaban:


10

QGIS dapat membantu. Periksa jawaban ini (bagian WKT) untuk pertanyaan serupa: Konversi poligon peta pajak dari Shapefile ke tabel nomor peta dan koordinat sudut


Terima kasih! Saya mengunduh QGIS sekarang dan saya akan mengomentari hasilnya!
Zebs

Sangat mudah menyalin ke editor teks. Pertanyaan komplementer saya adalah bagaimana mengubah poin menjadi informasi lat, long?
Zebs

2
Buka shapefile asli. Klik kanan di legenda dan pilih "Simpan sebagai ...". Memilih nama file target dan mengoordinasikan sistem EPSG: 4326 (WGS84). Memuat shapefile baru itu. Sekarang Anda bisa mendapatkan koordinat lat / lon.
underdark

4

Terima kasih, apakah Anda tahu bagaimana saya bisa mengonversi nilai X, Y ke lon / lat. Saya setuju bahwa saya memerlukan proyeksi tetapi saya bisa mendapatkannya dari shapefile, kan?
Zebs

@zeb Ya, saya tahu; tidak, Anda tidak dapat melakukannya dengan cara yang Anda pikirkan. Shapefile hanya berisi koordinat dan atribut; tidak ada metadata. Terkadang informasi proyeksi muncul dalam file .prj (berbagi nama dasar shapefile). Jika tidak, maka Anda hanya harus tahu. (Penyedia data harus memberi tahu Anda.) Anda memerlukan perangkat lunak SIG, atau yang setara, untuk tidak memproyeksikan koordinat. Ini berarti mengkonversi shapefile yang dalam GIS ke shapefile lain (atau setara) dan kemudian mengekspor koordinat baru.
whuber

2

Di bawah ini adalah cara untuk mengakses koordinat garis lintang dan bujur ESRI, di antara bit informasi lainnya seperti, referensi spasial, atribut bidang, nilai-nilai bidang, dll., Menggunakan Python. Kode di bawah ini hanya berfungsi untuk poligon dan poin (karena saya belum sempat menulis kode untuk polyline). Saya pada dasarnya membuat beberapa kode yang saya temukan tersebar di ArcGIS Desktop Help 9.3, menambahkan beberapa milik saya dan menggabungkannya dalam satu fungsi. Itu ditulis dengan ArcGIS 9.3. Anda harus dapat lulus dalam poligon shapefile atau titik shapefile dan logika akan mengarahkannya sesuai.

 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 )
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.