KML, bir KML Özelliğine özel veri eklemenin üç yolunu sunar. Seçtiğiniz yaklaşım, eklediğiniz verilerin türüne ve verileri KML sununuzda nasıl kullanmayı planladığınıza bağlıdır. Özellikle <ExpandedData> öğesi aşağıdaki mekanizmaları sağlar:
- <Data> öğesi: Belirli bir özellikle (NetworkLink, Bookmarks, GroundOverlay, PhotoOverlay, ScreenOverlay, Document veya Folder) ilişkilendirilmiş kullanıcı verilerine yazılmamış ad/değer çiftleri eklemenize olanak tanır. Bu ad/değer çiftleri varsayılan olarak balonda görüntülenir. Bu bilgiler, <BalloonStyle> öğesinin <text> öğesinde öğe değişimi için de kullanılabilir. ( BalloonStyle Element'i Şablon olarak kullanma bölümündeki bölüme bakın.)
- <Schema> ve <SchemaData> öğeleri: Belirtilen bir özellikle ilişkili kullanıcı verilerine yazılan verileri eklemenize olanak tanır.
- İsteğe bağlı XML verileri: Kullanıcı verilerini bir KML dosyasında saklamanıza olanak tanır. Google Earth bu verileri dosyayla birlikte aktarır ve kaydeder, ancak kullanmaz.
Not: Bu üç mekanizma aynı dosyada birleştirilebilir. Farklı kaynaklardan farklı veri türleri ekliyorsanız özel verilerin bir kısmı için yazılan veri yaklaşımını (Schema/SchemaData) ve diğer özel veriler için yazılmamış verileri (Veri) kullanmak uygun olabilir.
Hangi Yaklaşımı Kullanmalısınız?
Çoğu durumda <Data> öğesi, bir KML Özelliğine türlenmemiş veriler eklemek için en basit ve en güçlü mekanizmayı sunar. Bu yöntemin uygulanması oldukça kolaydır ve bir KML dosyasındaki tüm Yer İşaretlerine uygulanabilecek bir BalloonStyle şablonunun kullanılmasını kolaylaştırır. (Bu kullanım örneği için Genişletilmiş Veri Öğeleri için Öğe Değiştirme bölümüne bakın.)
<Schema> ve <SchemaData> öğeleri, yazılı kullanıcı verileri eklemenize olanak tanır. Bu öğeler esas olarak Coğrafi Bilgi Sistemi (Coğrafi Bilgi Sistemi) verilerine sahip kullanıcılara sunulur. Harici bir bilgisayar uygulaması tarafından kullanılan verileri yazdıysanız, bir özelliğe yapılandırılmış veri türleri eklemek için muhtemelen <Schema> ve <SchemaData> öğelerini kullanmanız gerekir. (Google Earth bu yazılan bilgileri kullanmaz ancak diğer uygulamalarınız gerektirebilir.) Basit kullanıcılar muhtemelen bu mekanizmanın sunduğu daha teknik özelliklere ihtiyaç duymayacaktır. <Data> gibi <SchemaData>, BalloonStyle için şablonların kullanımını kolaylaştırır.
Yalnızca bir KML dosyasıyla birlikte veri iletmeniz gerekiyorsa ve verileri işlemek için Google Earth'e ihtiyacınız yoksa, bir XML ad alanı önekini kullanmanıza ve mevcut KML bağlamında veri iletmenize olanak tanıyan rastgele XML verileri özelliğini kullanın. Daha fazla bilgi için isteğe bağlı XML verileri bölümünü inceleyin.
Yazılı Olmayan Ad/Değer Çiftleri Ekleme
<Data> öğesi, bir KML Özelliğine yazılmamış ad/değer çiftleri eklemek için kullanılan basit ancak güçlü bir mekanizmadır. Bu öğenin söz dizimi aşağıdaki gibidir:
<ExtendedData>
<Data name="string">
<displayName>...</displayName> <!-- string -->
<value>...</value> <!-- string -->
</Data> </ExtendedData>
name özelliği, bu veri parçası için benzersiz bir kimliktir. <displayName> öğesi, bu verilerin adını kullanıcı dostu bir biçimde görüntülemek istediğinizde kullanılır. <displayName>; boşluklar, URL'ler ve köprüler içeren CDATA içerebilir.
Aşağıda, bir golf sahasındaki birkaç delikle ilgili özel veriler içeren bir Yer İşareti örneği verilmiştir:
<kml xmlns="http://www.opengis.net/kml/2.2"> <Document> <name>My Golf Course Example</name> <Placemark> <name>Club house</name> <ExtendedData> <Data name="holeNumber"> <value>1</value> </Data> <Data name="holeYardage"> <value>234</value> </Data> <Data name="holePar"> <value>4</value> </Data> </ExtendedData> <Point> <coordinates>-111.956,33.5043</coordinates> </Point>
</Placemark> <Placemark> <name>By the lake</name> <ExtendedData> <Data name="holeNumber"> <value>5</value> </Data> <Data name="holeYardage"> <value>523</value> </Data> <Data name="holePar"> <value>5</value> </Data> </ExtendedData> <Point> <coordinates>-111.95,33.5024</coordinates> </Point>
</Placemark> </Document> </kml>
Bu ekran görüntüsü, varsayılan olarak <Data> öğelerinin Yer İşareti balonundaki bir tabloda nasıl görüntülendiğini gösterir:
Balon için varsayılan stilin kullanıldığı veri örneği
İnceleme: BalloonStyle Element'i Şablon olarak kullanma
KML'de bir Stil'i bir kez tanımlayabilir ve Stil'e bir kimlik atayabilirsiniz. Stili bu şekilde tanımladıktan sonra, <styleUrl> öğesini kullanarak stile KML dosyasında (veya diğer KML dosyalarına) birden çok kez başvuruda bulunabilirsiniz. Bu şekilde tanımlanan stillere paylaşılan stil adı verilir. <BalloonStyle> içindeki <text> öğesi varlık değişimini destekliyor. Varlığın her örneğinde bağımsız değerler değiştirilebilir. Değiştirilebilen standart varlıklar şunlardır:
- $[ad]
- Yer işaretinin adıyla değiştirilir
- $[description]
- Yer işaretinin açıklaması ile değiştirilir
- $[adres]
- Yer işaretinin adresiyle değiştirilir
- $[id]
- Yer işaretinin kimliğiyle değiştirildi
- $[Snippet]
- Yer işaretinin Snippet'i ile değiştirilir
- $[geDirections]
- Yer İşareti'nin Alıcı/Gönderen yol tarifleri ile değiştirildi
Genişletilmiş Veri Öğeleri için Varlık Değiştirme
Google Earth, <BalloonStyle>'ın <text> öğesinde belirli genişletilmiş veri öğelerinin de değiştirilmesini destekler. <text> öğesinde aşağıdaki varlıklara başvurabilir:
Değişken | Şununla değiştirildi: | Örnek |
---|---|---|
$[name_Veri_öğesi_özelliği] | <value> öğesinin içeriği | delikNumarası, delik Koyu |
$[ad_attribute_of_Data/görünenAdı] | <displayName> öğesinin içeriği | Delik Numarası, Delik Bahçesi |
Golf sahası örneği için <BalloonStyle> şablonu oluşturan bir örneği burada bulabilirsiniz. Google Earth her bir Yer İşareti balonunun yerine, Yer İşareti adını değiştirir ve her bir delik için delik numarası, par ve yarda içeren bilgileri yazar:
<?xml version="1.0" encoding="UTF-8"?> <kml xmlns="http://www.opengis.net/kml/2.2"> <Document> <name>Data+BalloonStyle</name> <Style id="golf-balloon-style"> <BalloonStyle> <text> <![CDATA[ This is $[name] This is hole $[holeNumber] The par for this hole is $[holePar] The yardage is $[holeYardage] ]]> </text> </BalloonStyle> </Style> <!-- Shared style sample Two Placemarks use the same balloon template --> <Placemark> <name>Club house</name> <styleUrl>#golf-balloon-style</styleUrl> <ExtendedData> <Data name="holeNumber"> <value>1</value> </Data> <Data name="holeYardage"> <value>234</value> </Data> <Data name="holePar"> <value>4</value> </Data> </ExtendedData> <Point> <coordinates>-111.956,33.5043</coordinates> </Point> </Placemark> <Placemark> <name>By the lake</name> <styleUrl>#golf-balloon-style</styleUrl> <ExtendedData> <Data name="holeNumber"> <value>5</value> </Data> <Data name="holeYardage"> <value>523</value> </Data> <Data name="holePar"> <value>5</value> </Data> </ExtendedData> <Point> <coordinates>-111.95,33.5024</coordinates> </Point> </Placemark> </Document> </kml>
Bu örneğin ekran görüntüsü şöyledir:
Balon için varsayılan stilin kullanıldığı veri örneği
Burada, <displayName> öğesinin nasıl kullanılacağına ilişkin daha gerçekçi bir örnek verilmiştir. Bu teknik, metni yerelleştirmeye ve daha ayrıntılı biçimlendirmeye olanak tanır.
<?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="http://www.opengis.net/kml/2.2">
<Document>
<name>Entity-Replacement</name>
<Style id="displayName-value">
<BalloonStyle>
<text>
<![CDATA[
This is $[name]<br/>
$[holeNumber/displayName] $[holeNumber]<br/>
$[holePar/displayName] $[holePar]<br/>
$[holeYardage/displayName] $[holeYardage]
]]>
</text>
</BalloonStyle>
</Style>
<!-- Shared style sample
Two Placemarks use the same balloon template
-->
<Placemark>
<name>Club house</name>
<styleUrl>#displayName-value</styleUrl>
<ExtendedData>
<Data name="holeNumber">
<displayName><![CDATA[
<b>This is hole </b>
]]></displayName>
<value>1</value>
</Data>
<Data name="holePar">
<displayName><![CDATA[
<i>The par for this hole is </i>
]]></displayName>
<value>4</value>
</Data>
<Data name="holeYardage">
<displayName><![CDATA[
<b><i>The yardage is </i></b>
]]></displayName>
<value>234</value>
</Data>
</ExtendedData>
<Point>
<coordinates>-111.956,33.5043</coordinates>
</Point>
</Placemark>
<Placemark>
<name>By the lake</name>
<styleUrl>#Entity-Replacement</styleUrl>
<ExtendedData>
<Data name="holeNumber">
<displayName><![CDATA[
<b>This is hole </b>
]]></displayName>
<value>5</value>
</Data>
<Data name="holePar">
<displayName><![CDATA[
<i>The par for this hole is </i>
]]></displayName>
<value>5</value>
</Data>
<Data name="holeYardage">
<displayName><![CDATA[
<b><i>The yardage is </i></b>
]]></displayName>
<value>523</value>
</Data>
</ExtendedData>
<Point>
<coordinates>-111.95,33.5024</coordinates>
</Point>
</Placemark>
</Document>
</kml>
Bu balon stili şablonunu kullanan bir balon örneğini aşağıda bulabilirsiniz:
Bir Özellik'e Yazılı Veriler Ekleme
<Schema> ve <SchemaData> öğeleri, bir özelliğe yazılan verileri eklemenizi sağlar. Belirli Coğrafi Bilgi Sistemi ve programlama uygulamaları, yazılan verilerle ilgilendikleri için bu özelliği gerektirir.
Yazılan Verileri Eklemeye Genel Bakış
Bir KML Özelliğine özel tür eklemek için iki temel görevi gerçekleştirirsiniz:
- Yeni türünüzü tanımlayan <Schema> öğesini oluşturun.
- <SchemaData> öğesini kullanarak yeni türün örneklerini oluşturun.
Şema Öğesi bildirme
Şema öğesi, yapılandırılmış tür bildirir. <Schema> her zaman <Belge> alt öğesidir. Bir Doküman, sıfır veya daha fazla Şema öğesi içerebilir.
Kimlik Özelliği
<Schema> öğesinin her zaman bir kimlik özelliği vardır. Bu tür örnekler oluşturulduğunda belirtilir (<SchemaData> kullanılarak). Bu kimlik, KML dosyasında benzersiz olmalıdır.
Ad Özelliği
Varlık değiştirme için kullanılan ad özelliği isteğe bağlıdır.
Söz dizimi
Şema öğesi aşağıdaki söz dizimine sahiptir:
<Schema name="string" id="ID"> <SimpleField type="string" name="string"> <displayName>...</displayName> <!-- string --> </SimpleField> </Schema>
Bir <BasitAlan> her zaman hem ad hem de tür özelliklerine sahiptir. Her iki özellik de yoksa alan yok sayılır. Ad özelliği, <BalloonStyle>'ın <text> öğesinde öğe değişimi için kullanılır. Simplefield'ın türü, aşağıdakilerden biri olabilir:
string
int
uint
short
ushort
float
double
bool
Verilerin Her Örneği Tanımlayın
Kullanıcı tanımlı türün bir örneğini oluşturmak için <SchemaData> öğesini kullanın. <SchemaData> için söz dizimi aşağıdaki gibidir:
<ExtendedData> <SchemaData schemaUrl="anyURI"> <SimpleData name=""> ... </SimpleData> <!-- string --> </SchemaData> </ExtendedData>
schemaUrl özelliği, türü tanımlayan Şemanın id özelliğine başvurur (bir styleUrl öğesinin, daha önce bildirilmiş olan bir Stil'in id özelliğine atıfta bulunması gibi).schemaUrl bir http adresiyse Google Earth bu dosyayı ağ genelinde getirir. Yer işareti başına belirli bir kullanıcı tanımlı türün yalnızca bir örneği olabilir.
Örnek
Aşağıdaki örnekte ScenicVista adlı bir kullanıcı tanımlı tür tanımlanmıştır. Bu tür üç alan içerir: TrailHeadName, TrailLength ve ElevationEarn. TrailHeadName alanı, string
türünde değerler içerir. TrackLength alanı, double
türünde değerler içerir. ElevationEarn alanı, int
türünde değerler içerir. Easy path adlı yer işareti bu kullanıcı türünün bir örneğini içerir. Bu örnekte TrailHeadName alanı için "Pi gökyüzü"", TrailLength alanı için 3.14159 değeri ve ElevationEarn alanı için 10 değerindedir.
<kml xmlns="http://www.opengis.net/kml/2.2"> <Document> <name>ExtendedData+SchemaData</name> <open>1</open> <!-- Declare the type "TrailHeadType" with 3 fields --> <Schema name="TrailHeadType" id="TrailHeadTypeId"> <SimpleField type="string" name="TrailHeadName"> <displayName><![CDATA[<b>Trail Head Name</b>]]></displayName> </SimpleField> <SimpleField type="double" name="TrailLength"> <displayName><![CDATA[<i>Length in miles</i>]]></displayName> </SimpleField> <SimpleField type="int" name="ElevationGain"> <displayName><![CDATA[<i>Change in altitude</i>]]></displayName> </SimpleField> </Schema> <!-- This is analogous to adding three fields to a new element of type TrailHead: <TrailHeadType> <TrailHeadName>...</TrailHeadName> <TrailLength>...</TrailLength> <ElevationGain>...</ElevationGain> </TrailHeadType>
--> <!-- Instantiate some Placemarks extended with TrailHeadType fields --> <Placemark> <name>Easy trail</name> <ExtendedData> <SchemaData schemaUrl="#TrailHeadTypeId"> <SimpleData name="TrailHeadName">Pi in the sky</SimpleData> <SimpleData name="TrailLength">3.14159</SimpleData> <SimpleData name="ElevationGain">10</SimpleData> </SchemaData> </ExtendedData> <Point> <coordinates>-122.000,37.002</coordinates> </Point> </Placemark> <Placemark> <name>Difficult trail</name> <ExtendedData> <SchemaData schemaUrl="#TrailHeadTypeId"> <SimpleData name="TrailHeadName">Mount Everest</SimpleData> <SimpleData name="TrailLength">347.45</SimpleData> <SimpleData name="ElevationGain">10000</SimpleData> </SchemaData> </ExtendedData> <Point> <coordinates>-121.998,37.0078</coordinates> </Point> </Placemark> </Document> </kml>
Balon için varsayılan stilin kullanıldığı schemaData örneği
DisplayName için Varlık Değiştirme
Schema/SchemaData mekanizması, <BalloonStyle> öğesinin <text> öğesinde öğe değiştirmeyi de destekler.
<Schema> etiketinin <displayName> özelliği, özel bir veri türü için kullanıcı dostu bir sürüm sağlamanıza olanak tanır. <Schema> dizesinde bir kez değiştirme, bu türü içeren tüm özellikler için <displayName> öğesini değiştirme etkisine sahiptir.
<BalloonStyle> öğesinin <text> öğesinde <displayName> öğesini tanımlamak için aşağıdaki söz dizimini kullanın:
$[TYPENAME/TYPEFIELD/displayName]
burada:
- TÜR
- , <Schema> name özelliğidir
- TÜRÜ
- , <BasitAlan> name özelliğidir
- görünen ad
- , <BasitAlan> içindeki <displayName> öğesidir.
Aşağıdaki kod, önceki SchemaData örneğine bir BalloonStyle şablonu ekler. Golf Sahası örneğinde olduğu gibi şablon, dokümanın başında <Style>, <BalloonStyle> ve <text> öğeleri kullanılarak oluşturulur. Dosyadaki her Yer İşareti bu stil şablonuna başvuruda bulunur ("ExpandedData+SchemaData" adlı).
<kml xmlns="http://www.opengis.net/kml/2.2"> <Document> <name>ExtendedData+SchemaData</name> <open>1</open> <!-- Create a balloon template referring to the user-defined type --> <Style id="trailhead-balloon-template"> <BalloonStyle> <text> <![CDATA[ <h2>My favorite trails!</h2> <br/><br/> The $[TrailHeadType/TrailHeadName/displayName] is <i>$[TrailHeadType/TrailHeadName]</i>. The trail is $[TrailHeadType/TrailLength] miles. <br/> The climb is $[TrailHeadType/ElevationGain] meters. <br/><br/> ]]> </text> </BalloonStyle> </Style> <!-- Declare the type "TrailHeadType" with 3 fields --> <Schema name="TrailHeadType" id="TrailHeadTypeId"> <SimpleField type="string" name="TrailHeadName"> <displayName><![CDATA[<b>Trail Head Name</b>]]></displayName> </SimpleField> <SimpleField type="double" name="TrailLength"> <displayName><![CDATA[<i>The length in miles</i>]]></displayName> </SimpleField> <SimpleField type="int" name="ElevationGain"> <displayName><![CDATA[<i>change in altitude</i>]]></displayName> </SimpleField> </Schema> <!-- Instantiate some Placemarks extended with TrailHeadType fields --> <Placemark> <name>Easy trail</name> <styleUrl>#trailhead-balloon-template</styleUrl> <ExtendedData> <SchemaData schemaUrl="#TrailHeadTypeId"> <SimpleData name="TrailHeadName">Pi in the sky</SimpleData> <SimpleData name="TrailLength">3.14159</SimpleData> <SimpleData name="ElevationGain">10</SimpleData> </SchemaData> </ExtendedData> <Point> <coordinates>-122.000,37.002</coordinates> </Point> </Placemark> <Placemark> <name>Difficult trail</name> <styleUrl>#trailhead-balloon-template</styleUrl> <ExtendedData> <SchemaData schemaUrl="#TrailHeadTypeId"> <SimpleData name="TrailHeadName">Mount Everest</SimpleData> <SimpleData name="TrailLength">347.45</SimpleData> <SimpleData name="ElevationGain">10000</SimpleData> </SchemaData> </ExtendedData> <Point> <coordinates>-121.998,37.0078</coordinates> </Point> </Placemark> </Document> </kml>
BalloonStyle şablonu kullanan schemaData örneği
Önceki ekran görüntüsünde gösterilenle aynı veriler için bir BalloonStyle şablonu kullanılarak oluşturulan balonu varsayılan balon stiliyle karşılaştırın.
Bir Özelliğe İsteğe Bağlı XML Verileri Ekleme
Bir özelliğe kullanıcı verileri eklemenin en basit yolu, verileri doğrudan <ExpandedData> değeri olarak eklemektir. Google Earth bu verileri korur ancak işlemez.
Bu şekilde eklenen özel veri öğelerinin bir namespace öneki (xmlns:prefix="namespace") içermesi gerekir. Bu ön ek, <KML> öğesine veya <ExpandedData> öğesine eklenebilir. Harici ad alanı ön eki, aşağıdaki örnekte gösterildiği gibi her kullanıcı verisi örneğini nitelendirmelidir:
<kml xmlns="http://www.opengis.net/kml/2.2"> <Document> <name>ExtendedData Test</name> <Placemark> <name>CampsiteData</name> <!-- Imported schema requires use of namespace prefix --> <ExtendedData xmlns:camp="http://campsites.com"> <camp:number>14</camp:number> <camp:parkingSpaces>2</camp:parkingSpaces> <camp:tentSites>4</camp:tentSites> </ExtendedData> <Point> <coordinates>-114.041,53.7199</coordinates> </Point> </Placemark> </Document> </kml>