• DİKKAT

    DOSYA İndirmek/Yüklemek için ÜCRETLİ ALTIN ÜYELİK Gereklidir!
    Altın Üyelik Hakkında Bilgi

Girilen Alan koordinatlarını KML'ye çevirme

neonkratos

Altın Üye
Katılım
26 Ekim 2016
Mesajlar
8
Excel Vers. ve Dili
2016 - Türkçe
A ve B sütununa girdiğim WGS84 formatındaki alan koordinatlarını makro ile KML'ye çevirmek istiyorum. Yardımcı olabilir misiniz

* Forumda göz gezdirdim ama alan olarak herhangi bir şey göremedim. Aynı konudan var ise ve bulamadıysam şimdiden kusura bakmayın.
 

Ekli dosyalar

Merhaba,
Korhan Bey'in vermiş olduğu bağlantıda bulunan konuları inceleyin, farklı dosyalar farklı çözümler mutlaka bulacaksınız.

Vermiş olduğunuz koordinatlar ile bir alan çizdiğimde Altınova yakınlarından baston gibi bir alan çizdi, söz konusu koordinatlar doğrumu bilemedim.

1774479094452.png

Aşağıdaki kodların alanı doğru çizip çizmediğinden emin olmak için verdiğiniz konuma yakın bir arazi üzerinden çokgen kullanarak edindiğim koordinatları denedim, sonuç olumlu gibi deneyiniz.

Örnek koordinatlar
36,8061637,48388
36,8065337,48307
36,8071137,48337
36,806737,48427
36,8064137,48404
36,8064237,48402
36,806437,48405
36,8063937,48407
36,8063937,48411
36,8063837,48414
36,8063637,48415
36,8063537,48414
36,8063337,48413
36,8061637,48388

1774479379045.png
*Kodlar yapay zeka ile üretilmiştir.

C++:
Sub KoordinatlarıAlanKMLYap()
    Dim LastRow As Long
    Dim i As Long
    Dim FilePath As String
    Dim FileNumber As Integer
    Dim Y_Coord As String, X_Coord As String
    Dim First_Y As String, First_X As String

    ' 1. Son dolu satırı bul (B sütununa göre)
    LastRow = Cells(Rows.Count, "B").End(xlUp).Row
  
    If LastRow < 3 Then
        MsgBox "A3 hücresinden başlayan yeterli veri bulunamadı!", vbExclamation
        Exit Sub
    End If

    ' 2. Kayıt yolu (Masaüstü)
    FilePath = CreateObject("WScript.Shell").SpecialFolders("Desktop") & "\Kapali_Alan.kml"
    FileNumber = FreeFile

    ' 3. Dosyayı oluştur ve KML Alan (Polygon) etiketlerini yaz
    Open FilePath For Output As #FileNumber

    Print #FileNumber, "<?xml version=""1.0"" encoding=""UTF-8""?>"
    Print #FileNumber, "<kml xmlns=""http://www.opengis.net/kml/2.2"">"
    Print #FileNumber, "<Document>"
    Print #FileNumber, "  <Style id=""alanStili"">"
    Print #FileNumber, "    <LineStyle><color>ff0000ff</color><width>2</width></LineStyle>" ' Kırmızı kenarlık
    Print #FileNumber, "    <PolyStyle><color>7f00ff00</color></PolyStyle>" ' Yarı saydam yeşil dolgu
    Print #FileNumber, "  </Style>"
    Print #FileNumber, "  <Placemark>"
    Print #FileNumber, "    <name>Excelden Gelen Alan</name>"
    Print #FileNumber, "    <styleUrl>#alanStili</styleUrl>"
    Print #FileNumber, "    <Polygon>"
    Print #FileNumber, "      <tessellate>1</tessellate>"
    Print #FileNumber, "      <outerBoundaryIs>"
    Print #FileNumber, "        <LinearRing>"
    Print #FileNumber, "          <coordinates>"

    ' 4. Koordinatları Döngüyle Yazdır
    For i = 3 To LastRow
        Y_Coord = Replace(Trim(Cells(i, 1).Value), ",", ".") ' A Sütunu (Boylam)
        X_Coord = Replace(Trim(Cells(i, 2).Value), ",", ".") ' B Sütunu (Enlem)
      
        ' İlk koordinatı hafızada tut (Kapatma işlemi için)
        If i = 3 Then
            First_Y = Y_Coord
            First_X = X_Coord
        End If
      
        Print #FileNumber, "            " & Y_Coord & "," & X_Coord & ",0"
    Next i

    ' 5. ALANI KAPAT: İlk koordinatı sona tekrar yazdır
    Print #FileNumber, "            " & First_Y & "," & First_X & ",0"

    ' KML Kapatma Etiketleri
    Print #FileNumber, "          </coordinates>"
    Print #FileNumber, "        </LinearRing>"
    Print #FileNumber, "      </outerBoundaryIs>"
    Print #FileNumber, "    </Polygon>"
    Print #FileNumber, "  </Placemark>"
    Print #FileNumber, "</Document>"
    Print #FileNumber, "</kml>"

    Close #FileNumber

    MsgBox "Alan (Polygon) KML dosyası masaüstüne kaydedildi!", vbInformation
End Sub

İyi çalışmalar.
 
Son düzenleme:
Geri
Üst