Bir şekil dosyası tanımlayan tüm enlem / boylam koordinatları nasıl elde edilir


9

İçinde birkaç şekil bulunan bir Shapefile var.

MapWindow'u kullanarak ihtiyacım olan şeklin shapeId 19 olan şekli olduğunu tespit edebildim.

Muhtemelen söyleyebileceğim gibi genel olarak CBS konusunda çok az deneyime sahibim ama bence yardım istemek için doğru yere geldim.

İhtiyacım olan şekli belirleyen tüm enlem / boylam koordinatlarını çıkarmak.

MapWindow kullanarak bunu yapmak mümkün mü yoksa başka bir yazılım kullanmam gerekiyor mu?

Yardım için daha fazla bilgi gerekiyorsa, lütfen yorum yapın, en kısa zamanda güncelleyeceğim.

Bu beni deli ediyor gibi herhangi bir yardım takdir!

Yanıtlar:


10

QGIS yardımcı olabilir. Benzer bir soru için bu yanıtı (WKT kısmı) kontrol edin: Vergi haritası çokgenlerini Shapefile'dan harita numarası ve köşe koordinatları tablosuna dönüştürme


Teşekkür ederim! Şu anda QGIS'i indiriyorum ve sonuçlara tekrar yorum yapacağım!
Zebs

Bir metin düzenleyicisine kopyalamak çok kolaydı. Benim tamamlayıcı sorum noktaları lat, uzun infomration dönüştürmek nasıl?
Zebs

2
Orijinal şekil dosyasını açın. Göstergede sağ tıklayın ve "Farklı kaydet ..." seçeneğini seçin. Bir hedef dosya adı ve koordinat sistemi EPSG: 4326 (WGS84) seçin. Yeni şekil dosyasını yükleyin. Artık enlem / boylam koordinatları alabilirsiniz.
underdark

4

Teşekkürler, nasıl X, Y değerleri lon / lat dönüştürmek biliyor musunuz. Projeksiyona ihtiyacım olduğunu anlıyorum ama bunu şekil dosyasından alabilir miyim?
Zebs

@zebs Evet, biliyorum; Hayır, düşündüğünüz gibi yapamazsınız. Şekil dosyası yalnızca koordinatları ve öznitelikleri içerir; meta veri yok. Bazen projeksiyon bilgileri bir .prj dosyasında görünür (şekil dosyasının temel adını paylaşır). Değilse, bilmelisin. (Veri sağlayıcı size söylemelidir.) Koordinatları çıkarmak için GIS yazılımına veya eşdeğerine ihtiyacınız vardır. Bu , CBS içindeki şekil dosyasının başka bir şekil dosyasına (veya eşdeğerine) dönüştürülmesi ve ardından yeni koordinatlarının dışa aktarılması anlamına gelir .
whuber

2

Aşağıda, Python kullanarak uzamsal referans, alan nitelikleri, alan değerleri vb. Gibi diğer bilgi bitlerinin yanı sıra ESRI şekil dosyası enlem ve boylam koordinatlarına erişmenin bir yolu vardır. Aşağıdaki kod sadece çokgenler ve noktalar için çalışır (çünkü ben polylines için kod yazmak için uğraşmadım). Temelde ArcGIS Desktop Help 9.3 etrafında dağılmış bulduğum bazı kodları bir araya topladım, kendiminkileri ekledim ve bir fonksiyonda bir araya getirdim. ArcGIS 9.3 ile yazılmıştır. Bir çokgen şekil dosyası veya nokta şekil dosyası içinden geçebilmeniz gerekir ve mantık buna göre yönlendirir.

 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 )
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.