<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>ikml.com</title>
    <link>https://ikml.com/</link>
    <description>Recent content on ikml.com</description>
    <generator>Hugo</generator>
    <language>en-us</language>
    <lastBuildDate>Sun, 25 Oct 2026 00:00:00 +0000</lastBuildDate>
    <atom:link href="https://ikml.com/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>A DJI Drone Mission KMZ and What a GIS Import Would Drop</title>
      <link>https://ikml.com/a-dji-drone-mission-kmz-and-what-a-gis-import-would-drop/</link>
      <pubDate>Sun, 25 Oct 2026 00:00:00 +0000</pubDate>
      <guid>https://ikml.com/a-dji-drone-mission-kmz-and-what-a-gis-import-would-drop/</guid>
      <description>&lt;p&gt;Drone mapping and inspection work runs on mission files. DJI&amp;rsquo;s planning software saves a mission as a KMZ that holds a folder called &lt;code&gt;wpmz&lt;/code&gt;, with a &lt;code&gt;template.kml&lt;/code&gt; describing the route and a &lt;code&gt;waylines.wpml&lt;/code&gt; file the drone&amp;rsquo;s controller actually flies. The KML uses DJI&amp;rsquo;s own &lt;code&gt;wpml&lt;/code&gt; namespace for everything a drone needs: heights, speeds, gimbal angles, what to do at each waypoint.&lt;/p&gt;&#xA;&lt;p&gt;A survey company that receives one of these and wants to see the route on its own maps usually opens it in a GIS or converts it to GeoJSON. The waypoints come through. Almost nothing else does, and nothing says so.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Checking Private Site Plans Without Uploading Them Anywhere</title>
      <link>https://ikml.com/checking-private-site-plans-without-uploading-them-anywhere/</link>
      <pubDate>Sun, 25 Oct 2026 00:00:00 +0000</pubDate>
      <guid>https://ikml.com/checking-private-site-plans-without-uploading-them-anywhere/</guid>
      <description>&lt;p&gt;Some geographic files shouldn&amp;rsquo;t leave the building. A utility&amp;rsquo;s network map, the plot boundaries of a development that hasn&amp;rsquo;t been announced, the survey of a client&amp;rsquo;s site under an NDA, the locations in an investigation. These are exactly the files people need to check before importing them somewhere, and exactly the files that can&amp;rsquo;t go to an online converter.&lt;/p&gt;&#xA;&lt;p&gt;Most web-based map tools upload the file to a server to process it, and many fetch map tiles for a preview, which tells a tile server which part of the world you&amp;rsquo;re looking at. Neither is acceptable for a file you&amp;rsquo;ve been asked to keep private.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Google My Maps Export to GeoJSON and Which Styles Survive</title>
      <link>https://ikml.com/google-my-maps-export-to-geojson-and-which-styles-survive/</link>
      <pubDate>Sun, 25 Oct 2026 00:00:00 +0000</pubDate>
      <guid>https://ikml.com/google-my-maps-export-to-geojson-and-which-styles-survive/</guid>
      <description>&lt;p&gt;Google My Maps is where a lot of maps start: a school trip, a list of venues, a delivery route, built by someone who never opened a GIS. When the map needs to go somewhere else, My Maps exports it as KML or KMZ. Each layer becomes a folder, the colour and icon of every pin becomes a pair of styles, and the table of extra fields becomes ExtendedData.&lt;/p&gt;&#xA;&lt;p&gt;Then someone converts that to GeoJSON for a website, and the map comes out grey.&lt;/p&gt;</description>
    </item>
    <item>
      <title>GPS Tracks With Timestamps and What Happens to Them in GeoJSON</title>
      <link>https://ikml.com/gps-tracks-with-timestamps-and-what-happens-to-them-in-geojson/</link>
      <pubDate>Sun, 25 Oct 2026 00:00:00 +0000</pubDate>
      <guid>https://ikml.com/gps-tracks-with-timestamps-and-what-happens-to-them-in-geojson/</guid>
      <description>&lt;p&gt;A GPS track in KML is more than a line. Google&amp;rsquo;s &lt;code&gt;gx:Track&lt;/code&gt; element stores a time for every position, so a ride, a run or a vehicle&amp;rsquo;s day can be replayed, measured for speed and matched against other data by time. Fitness devices and tracking apps also attach values per point, such as heart rate or speed, as &lt;code&gt;SimpleArrayData&lt;/code&gt;.&lt;/p&gt;&#xA;&lt;p&gt;A plain conversion to GeoJSON turns the track into a LineString, and the times are gone. The line is still there, so it looks fine on a map, until someone asks how long a stretch took.&lt;/p&gt;</description>
    </item>
    <item>
      <title>How iKML Was Tested With Hand-Written Exports, Random Round Trips and Fuzzing</title>
      <link>https://ikml.com/how-ikml-was-tested-with-hand-written-exports-random-round-trips-and-fuzzing/</link>
      <pubDate>Sun, 25 Oct 2026 00:00:00 +0000</pubDate>
      <guid>https://ikml.com/how-ikml-was-tested-with-hand-written-exports-random-round-trips-and-fuzzing/</guid>
      <description>&lt;p&gt;iKML makes two kinds of promise. When it reads a map file, it should report what&amp;rsquo;s really wrong with it, in a place you can find. When it writes a file, the shapes should come out where they went in. The tests check both, and this page says how.&lt;/p&gt;&#xA;&lt;p&gt;Every number here comes from the &lt;a href=&#34;https://github.com/softdevstudio/ikml/tree/main/test/results&#34;&gt;test/results&lt;/a&gt; folder of the code repository. A script runs all the tests and writes those files, and the site quotes only what they say.&lt;/p&gt;</description>
    </item>
    <item>
      <title>iKML 0.1 Shows What Is Inside a KML, KMZ or GeoJSON File Before You Import It</title>
      <link>https://ikml.com/ikml-0.1-shows-what-is-inside-a-kml-kmz-or-geojson-file-before-you-import-it/</link>
      <pubDate>Sun, 25 Oct 2026 00:00:00 +0000</pubDate>
      <guid>https://ikml.com/ikml-0.1-shows-what-is-inside-a-kml-kmz-or-geojson-file-before-you-import-it/</guid>
      <description>&lt;p&gt;Somebody sends you a map file. A KMZ from a drone pilot, a KML export from Google My Maps, a GeoJSON layer from a city&amp;rsquo;s open data portal. You open it in QGIS, or upload it to a web map, and something is off: a few points are missing, a polygon doesn&amp;rsquo;t draw, the icons are grey squares, half the attribute columns are gone. Nothing told you why.&lt;/p&gt;&#xA;&lt;p&gt;iKML 0.1 tells you first. It opens KML, KMZ and GeoJSON files, shows what&amp;rsquo;s inside them, flags what&amp;rsquo;s broken, explains exactly what a conversion to another format will lose, and writes a cleaned copy with a list of every change.&lt;/p&gt;</description>
    </item>
    <item>
      <title>KMZ Files That Point to Pictures on Someone Else&#39;s Computer</title>
      <link>https://ikml.com/kmz-files-that-point-to-pictures-on-someone-elses-computer/</link>
      <pubDate>Sun, 25 Oct 2026 00:00:00 +0000</pubDate>
      <guid>https://ikml.com/kmz-files-that-point-to-pictures-on-someone-elses-computer/</guid>
      <description>&lt;p&gt;A KMZ is supposed to carry its pictures with it. That&amp;rsquo;s the reason it exists: the KML document goes into a zip archive together with the icons, the photos in the descriptions and the images of any overlays, and the whole thing works anywhere.&lt;/p&gt;&#xA;&lt;p&gt;It only works if the document refers to the copies inside the archive. When someone builds a placemark in Google Earth with an icon from their desktop, or pastes a photo into a description, the reference can end up as a path on their own computer. They see everything, because the files are right there. Everyone else sees a broken image.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Swapped Latitude and Longitude Sends Points to the Wrong Side of the World</title>
      <link>https://ikml.com/swapped-latitude-and-longitude-sends-points-to-the-wrong-side-of-the-world/</link>
      <pubDate>Sun, 25 Oct 2026 00:00:00 +0000</pubDate>
      <guid>https://ikml.com/swapped-latitude-and-longitude-sends-points-to-the-wrong-side-of-the-world/</guid>
      <description>&lt;p&gt;KML writes every position as longitude first, then latitude: &lt;code&gt;34.78,32.08&lt;/code&gt; is a point in Tel Aviv. Most people say coordinates the other way round, &amp;ldquo;latitude, longitude&amp;rdquo;, because that&amp;rsquo;s how maps and phones show them. So when somebody types a few points into a KML file by hand, or a script builds one from a spreadsheet with the columns in the wrong order, the numbers go in backwards.&lt;/p&gt;&#xA;&lt;p&gt;The file is still valid. Every number is in range. It opens without an error. And every point lands somewhere else entirely: &lt;code&gt;32.08,34.78&lt;/code&gt; read as longitude 32.08, latitude 34.78 is in the sea just off the west coast of Cyprus. Swap the numbers for Zurich and you get a point in the Horn of Africa.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Unclosed Polygon Rings in a Field Boundary File and How iKML Cleans Them</title>
      <link>https://ikml.com/unclosed-polygon-rings-in-a-field-boundary-file-and-how-ikml-cleans-them/</link>
      <pubDate>Sun, 25 Oct 2026 00:00:00 +0000</pubDate>
      <guid>https://ikml.com/unclosed-polygon-rings-in-a-field-boundary-file-and-how-ikml-cleans-them/</guid>
      <description>&lt;p&gt;A polygon in KML and GeoJSON is a ring of positions that ends where it starts. The last position must repeat the first, exactly. It looks redundant, and that&amp;rsquo;s exactly why it gets left out: a farm management app, a script that turns a CSV of corners into KML, or a person editing coordinates by hand writes the four corners of a field and stops.&lt;/p&gt;&#xA;&lt;p&gt;What happens next depends on the program reading the file. Some close the ring silently. Some draw it as a line, so the field has an outline but no area. Some refuse the shape, and the field is simply missing from the map, with the other fields drawn around the gap.&lt;/p&gt;</description>
    </item>
    <item>
      <title>What KML, KMZ and GeoJSON Are and Why Map Files Lose Data on Import</title>
      <link>https://ikml.com/what-kml-kmz-and-geojson-are-and-why-map-files-lose-data-on-import/</link>
      <pubDate>Sun, 25 Oct 2026 00:00:00 +0000</pubDate>
      <guid>https://ikml.com/what-kml-kmz-and-geojson-are-and-why-map-files-lose-data-on-import/</guid>
      <description>&lt;p&gt;Most map data that moves between people moves in one of three formats. They look interchangeable, and every tool converts between them. They aren&amp;rsquo;t interchangeable, which is why so much goes missing on the way.&lt;/p&gt;&#xA;&lt;h2 id=&#34;kml-built-for-an-earth-viewer&#34;&gt;KML: Built for an Earth Viewer&lt;/h2&gt;&#xA;&lt;p&gt;KML, the Keyhole Markup Language, was made for the program that became Google Earth. Keyhole, the company, was bought by Google in 2004. Google later handed the format to the Open Geospatial Consortium, and KML 2.2 became an OGC standard in 2008.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Why the Map File Inspector Is Called iKML</title>
      <link>https://ikml.com/why-the-map-file-inspector-is-called-ikml/</link>
      <pubDate>Sun, 25 Oct 2026 00:00:00 +0000</pubDate>
      <guid>https://ikml.com/why-the-map-file-inspector-is-called-ikml/</guid>
      <description>&lt;p&gt;iKML is two parts: the &amp;ldquo;i&amp;rdquo; of inspect, and KML.&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;KML&lt;/strong&gt; is the format the tool reads most, and the one people struggle with most. It&amp;rsquo;s the Keyhole Markup Language, named after Keyhole, the company whose Earth viewer became Google Earth. Today it&amp;rsquo;s an open standard of the Open Geospatial Consortium, which is why any tool, iKML included, can read and write it freely. iKML reads KMZ and GeoJSON too, but KML is where the trouble usually starts.&lt;/p&gt;</description>
    </item>
    <item>
      <title>About</title>
      <link>https://ikml.com/about/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://ikml.com/about/</guid>
      <description>&lt;p&gt;ikml.com is the home of iKML, a small tool that helps you understand a geographic file before you import it. It reads KML, KMZ and GeoJSON, shows what&amp;rsquo;s inside, flags what&amp;rsquo;s broken, tells you what a conversion to another format will lose, and writes a cleaned copy with a list of every change.&lt;/p&gt;&#xA;&lt;h2 id=&#34;why-it-exists&#34;&gt;Why It Exists&lt;/h2&gt;&#xA;&lt;p&gt;Map files get passed around more than almost any other kind of data. A drone pilot sends a mission KMZ, a surveyor sends site boundaries, a council publishes a layer, a colleague exports a Google My Maps project. The person receiving it opens it in QGIS, ArcGIS, a web map or a spreadsheet, and that&amp;rsquo;s where things go wrong without a word: points in the ocean, polygons that don&amp;rsquo;t draw, icons missing, attribute data and folders gone after a conversion.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Contact</title>
      <link>https://ikml.com/contact/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://ikml.com/contact/</guid>
      <description>&lt;p&gt;ikml.com would like to hear from:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;Anyone checking real files with iKML.&lt;/strong&gt; What it found, what it missed, and which tool the file came from.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Anyone who found a bug.&lt;/strong&gt; A good file iKML called broken, a broken one it passed, a conversion that lost something the report didn&amp;rsquo;t mention.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Anyone with an idea&lt;/strong&gt; for a format, a check or an exporter quirk iKML should know about.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Write to &lt;strong&gt;&lt;a href=&#34;mailto:info@ikml.com&#34;&gt;info@ikml.com&lt;/a&gt;&lt;/strong&gt;.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Download iKML</title>
      <link>https://ikml.com/download/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://ikml.com/download/</guid>
      <description>&lt;p&gt;The &lt;code&gt;ikml&lt;/code&gt; command is one file with nothing else to install. Each archive below holds it with its license files. The links always point to the latest release.&lt;/p&gt;&#xA;&lt;div style=&#34;overflow-x:auto&#34;&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;th&gt;System&lt;/th&gt;&#xA;          &lt;th&gt;Download&lt;/th&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;Linux, x86-64&lt;/td&gt;&#xA;          &lt;td&gt;&lt;a href=&#34;https://github.com/softdevstudio/ikml/releases/latest/download/ikml_linux_amd64.tar.gz&#34;&gt;ikml_linux_amd64.tar.gz&lt;/a&gt;&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;Linux, ARM64&lt;/td&gt;&#xA;          &lt;td&gt;&lt;a href=&#34;https://github.com/softdevstudio/ikml/releases/latest/download/ikml_linux_arm64.tar.gz&#34;&gt;ikml_linux_arm64.tar.gz&lt;/a&gt;&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;macOS, Apple silicon&lt;/td&gt;&#xA;          &lt;td&gt;&lt;a href=&#34;https://github.com/softdevstudio/ikml/releases/latest/download/ikml_darwin_arm64.tar.gz&#34;&gt;ikml_darwin_arm64.tar.gz&lt;/a&gt;&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;macOS, Intel&lt;/td&gt;&#xA;          &lt;td&gt;&lt;a href=&#34;https://github.com/softdevstudio/ikml/releases/latest/download/ikml_darwin_amd64.tar.gz&#34;&gt;ikml_darwin_amd64.tar.gz&lt;/a&gt;&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;Windows, x86-64&lt;/td&gt;&#xA;          &lt;td&gt;&lt;a href=&#34;https://github.com/softdevstudio/ikml/releases/latest/download/ikml_windows_amd64.zip&#34;&gt;ikml_windows_amd64.zip&lt;/a&gt;&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;/div&gt;&#xA;&lt;p&gt;&lt;em&gt;Checksums are in &lt;a href=&#34;https://github.com/softdevstudio/ikml/releases/latest/download/SHA256SUMS&#34;&gt;SHA256SUMS&lt;/a&gt;. Every release is listed on &lt;a href=&#34;https://github.com/softdevstudio/ikml/releases&#34;&gt;GitHub&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;&#xA;&lt;h2 id=&#34;install&#34;&gt;Install&lt;/h2&gt;&#xA;&lt;p&gt;On Linux or macOS:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;tar -xzf ikml_linux_amd64.tar.gz&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sudo mv ikml /usr/local/bin/&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;ikml version&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;The binaries are static, so they run on any Linux distribution. The macOS binaries aren&amp;rsquo;t signed by Apple, so macOS may block the first run; allow it in System Settings under Privacy &amp;amp; Security, or run &lt;code&gt;xattr -d com.apple.quarantine ikml&lt;/code&gt;. On Windows, unzip the archive and put &lt;code&gt;ikml.exe&lt;/code&gt; in a folder on your PATH.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Inspector</title>
      <link>https://ikml.com/inspect/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://ikml.com/inspect/</guid>
      <description>&lt;p&gt;Drop a KML, KMZ or GeoJSON file below. iKML reads it inside this page and shows what&amp;rsquo;s in it, what&amp;rsquo;s broken and what a conversion would lose. You can download a cleaned copy as GeoJSON, KML or KMZ.&lt;/p&gt;&#xA;&lt;div id=&#34;ikml-app&#34;&gt;&lt;/div&gt;&#xA;&lt;script src=&#34;https://ikml.com/tool/ikml.js&#34;&gt;&lt;/script&gt;&#xA;&lt;h2 id=&#34;your-file-stays-here&#34;&gt;Your File Stays Here&lt;/h2&gt;&#xA;&lt;p&gt;The inspector is iKML&amp;rsquo;s engine compiled to WebAssembly. Your browser reads the file from your disk and hands it to that engine in memory. Nothing is uploaded, and the page makes no other network requests once it has loaded. The preview is drawn from the coordinates alone, without map tiles, so not even the area you&amp;rsquo;re looking at is sent anywhere.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Quick Start</title>
      <link>https://ikml.com/quick-start/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://ikml.com/quick-start/</guid>
      <description>&lt;p&gt;The fastest start is no install at all: drop a file on &lt;a href=&#34;https://ikml.com/inspect/&#34;&gt;the inspector&lt;/a&gt;. This page covers the &lt;code&gt;ikml&lt;/code&gt; program, for batches of files, scripts and data pipelines.&lt;/p&gt;&#xA;&lt;h2 id=&#34;1-get-the-ikml-command&#34;&gt;1. Get the ikml Command&lt;/h2&gt;&#xA;&lt;p&gt;Download the archive for your system from &lt;a href=&#34;https://ikml.com/download/&#34;&gt;the download page&lt;/a&gt;, unpack it and put &lt;code&gt;ikml&lt;/code&gt; somewhere on your PATH. Check it works:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;ikml version&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;2-see-whats-inside&#34;&gt;2. See What&amp;rsquo;s Inside&lt;/h2&gt;&#xA;&lt;p&gt;&lt;code&gt;ikml inspect&lt;/code&gt; reads KML, KMZ and GeoJSON, whatever the file is called, and shows its structure, its attribute fields and styles, and anything worth knowing:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Reference</title>
      <link>https://ikml.com/reference/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://ikml.com/reference/</guid>
      <description>&lt;p&gt;Every issue iKML reports has a stable code. Scripts can match on the codes; they don&amp;rsquo;t change between versions. The same list is in the program: &lt;code&gt;ikml codes&lt;/code&gt;.&lt;/p&gt;&#xA;&lt;p&gt;Severity decides the exit code of &lt;code&gt;ikml check&lt;/code&gt;: errors give exit status 1,&#xA;warnings give 1 only with &lt;code&gt;--strict&lt;/code&gt;, and info never does.&lt;/p&gt;&#xA;&lt;h2 id=&#34;errors&#34;&gt;Errors&lt;/h2&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;th&gt;Code&lt;/th&gt;&#xA;          &lt;th&gt;Meaning&lt;/th&gt;&#xA;          &lt;th&gt;What &lt;code&gt;ikml clean&lt;/code&gt; does&lt;/th&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;code&gt;xml-invalid&lt;/code&gt;&lt;/td&gt;&#xA;          &lt;td&gt;The KML is not well-formed XML. Most programs refuse the whole file. iKML reports the line and keeps what it could read before the problem.&lt;/td&gt;&#xA;          &lt;td&gt;Reported, not changed.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;code&gt;json-invalid&lt;/code&gt;&lt;/td&gt;&#xA;          &lt;td&gt;The GeoJSON is not valid JSON. iKML reports the line of the first problem.&lt;/td&gt;&#xA;          &lt;td&gt;Reported, not changed.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;code&gt;geojson-structure&lt;/code&gt;&lt;/td&gt;&#xA;          &lt;td&gt;The JSON is valid but does not follow GeoJSON rules, for example a missing &amp;ldquo;type&amp;rdquo; or a position that is not an array of numbers.&lt;/td&gt;&#xA;          &lt;td&gt;Reported, not changed.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;code&gt;kmz-invalid&lt;/code&gt;&lt;/td&gt;&#xA;          &lt;td&gt;The file starts like a zip archive but cannot be read as one.&lt;/td&gt;&#xA;          &lt;td&gt;Reported, not changed.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;code&gt;kmz-no-kml&lt;/code&gt;&lt;/td&gt;&#xA;          &lt;td&gt;The KMZ archive has no .kml file inside, so there is nothing to show.&lt;/td&gt;&#xA;          &lt;td&gt;Reported, not changed.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;code&gt;kmz-too-large&lt;/code&gt;&lt;/td&gt;&#xA;          &lt;td&gt;The KMZ expands past iKML&amp;rsquo;s safety limit (512 MiB in total, or an entry that compresses far better than real data does). iKML stops reading to protect your machine.&lt;/td&gt;&#xA;          &lt;td&gt;Reported, not changed.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;code&gt;coord-parse&lt;/code&gt;&lt;/td&gt;&#xA;          &lt;td&gt;A coordinate tuple could not be read as two or three numbers. Viewers usually drop the point or the whole shape.&lt;/td&gt;&#xA;          &lt;td&gt;Not fixed. The tuple is left as it is in KML output and dropped from GeoJSON output.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;code&gt;lon-range&lt;/code&gt;&lt;/td&gt;&#xA;          &lt;td&gt;A longitude is outside -180 to 180.&lt;/td&gt;&#xA;          &lt;td&gt;Reported, not changed.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;code&gt;lat-range&lt;/code&gt;&lt;/td&gt;&#xA;          &lt;td&gt;A latitude is outside -90 to 90.&lt;/td&gt;&#xA;          &lt;td&gt;Reported, not changed.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;code&gt;swapped-latlon&lt;/code&gt;&lt;/td&gt;&#xA;          &lt;td&gt;Every point of a placemark has the first value inside ±90 and the second outside ±90. That can only happen when latitude and longitude were written in the wrong order.&lt;/td&gt;&#xA;          &lt;td&gt;Fixed only with &amp;ndash;fix-swapped.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;code&gt;ring-unclosed&lt;/code&gt;&lt;/td&gt;&#xA;          &lt;td&gt;A polygon ring does not end on its first point. KML and GeoJSON both require closed rings.&lt;/td&gt;&#xA;          &lt;td&gt;Fixed: the first point is appended.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;code&gt;ring-too-short&lt;/code&gt;&lt;/td&gt;&#xA;          &lt;td&gt;A polygon ring has fewer than 4 positions (3 corners plus the closing point), so it has no area.&lt;/td&gt;&#xA;          &lt;td&gt;Reported, not changed.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;code&gt;line-too-short&lt;/code&gt;&lt;/td&gt;&#xA;          &lt;td&gt;A line has fewer than 2 positions.&lt;/td&gt;&#xA;          &lt;td&gt;Reported, not changed.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;code&gt;polygon-no-outer&lt;/code&gt;&lt;/td&gt;&#xA;          &lt;td&gt;A Polygon has no outer boundary.&lt;/td&gt;&#xA;          &lt;td&gt;Reported, not changed.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;code&gt;kmz-missing-asset&lt;/code&gt;&lt;/td&gt;&#xA;          &lt;td&gt;The document refers to a file (icon, image, overlay, model) that should be inside the KMZ but is not there.&lt;/td&gt;&#xA;          &lt;td&gt;Reported, not changed.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;code&gt;local-path-ref&lt;/code&gt;&lt;/td&gt;&#xA;          &lt;td&gt;A reference points to a file on the creator&amp;rsquo;s computer (file:///, C:, /Users/, /home/ and similar). Nobody else can open it.&lt;/td&gt;&#xA;          &lt;td&gt;Reported, not changed.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;code&gt;kmz-unsafe-path&lt;/code&gt;&lt;/td&gt;&#xA;          &lt;td&gt;A file inside the KMZ has a name that would unpack outside the folder: an absolute path, a drive letter or a .. step. A KMZ from a real mapping program never has one, and some unzip tools would write the file wherever the name points.&lt;/td&gt;&#xA;          &lt;td&gt;Fixed: the entry is left out of the cleaned copy, and iKML never writes such a name.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;code&gt;style-missing&lt;/code&gt;&lt;/td&gt;&#xA;          &lt;td&gt;A placemark uses a style (#id) that is not defined in the document. Viewers fall back to default styling.&lt;/td&gt;&#xA;          &lt;td&gt;Fixed: the broken styleUrl is removed.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;h2 id=&#34;warnings&#34;&gt;Warnings&lt;/h2&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;th&gt;Code&lt;/th&gt;&#xA;          &lt;th&gt;Meaning&lt;/th&gt;&#xA;          &lt;th&gt;What &lt;code&gt;ikml clean&lt;/code&gt; does&lt;/th&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;code&gt;null-island&lt;/code&gt;&lt;/td&gt;&#xA;          &lt;td&gt;A position is exactly 0,0, in the Gulf of Guinea. This is usually a missing value written as zero.&lt;/td&gt;&#xA;          &lt;td&gt;Reported, not changed.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;code&gt;duplicate-points&lt;/code&gt;&lt;/td&gt;&#xA;          &lt;td&gt;A line or ring repeats the same position twice in a row.&lt;/td&gt;&#xA;          &lt;td&gt;Fixed: repeats are removed, as long as the shape keeps enough points. GPS tracks are left alone.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;code&gt;coord-spacing&lt;/code&gt;&lt;/td&gt;&#xA;          &lt;td&gt;Coordinates have spaces next to the commas (&amp;ldquo;34.8, 32.1&amp;rdquo;). KML separates points with spaces, so some programs read each number as its own point.&lt;/td&gt;&#xA;          &lt;td&gt;Fixed: the coordinates are rewritten without the extra spaces.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;code&gt;empty-placemark&lt;/code&gt;&lt;/td&gt;&#xA;          &lt;td&gt;A placemark or feature has no geometry, so it will not show on a map.&lt;/td&gt;&#xA;          &lt;td&gt;Kept and reported.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;code&gt;http-ref&lt;/code&gt;&lt;/td&gt;&#xA;          &lt;td&gt;A reference uses plain http://. Browsers and some viewers block it, and the content is not inside the file.&lt;/td&gt;&#xA;          &lt;td&gt;Reported, not changed.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;code&gt;mixed-dimensions&lt;/code&gt;&lt;/td&gt;&#xA;          &lt;td&gt;One shape mixes 2D (lon,lat) and 3D (lon,lat,alt) positions.&lt;/td&gt;&#xA;          &lt;td&gt;Reported, not changed.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;code&gt;geojson-crs&lt;/code&gt;&lt;/td&gt;&#xA;          &lt;td&gt;The GeoJSON has a &amp;ldquo;crs&amp;rdquo; member. RFC 7946 removed it, and most tools ignore it and assume WGS 84 degrees.&lt;/td&gt;&#xA;          &lt;td&gt;Fixed when the crs names WGS 84 (CRS84 or EPSG:4326): the member is removed. Other systems are left, because the coordinates would need reprojecting.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;code&gt;geojson-nested-collection&lt;/code&gt;&lt;/td&gt;&#xA;          &lt;td&gt;A GeometryCollection contains another GeometryCollection. RFC 7946 says not to do this and many tools reject it.&lt;/td&gt;&#xA;          &lt;td&gt;Reported, not changed.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;code&gt;old-namespace&lt;/code&gt;&lt;/td&gt;&#xA;          &lt;td&gt;The file uses the KML 2.0 or 2.1 namespace. Newer tools expect 2.2.&lt;/td&gt;&#xA;          &lt;td&gt;Fixed: the namespace is changed to KML 2.2.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;code&gt;no-kml-root&lt;/code&gt;&lt;/td&gt;&#xA;          &lt;td&gt;The XML root is a Document, Folder or Placemark without the &lt;code&gt;&amp;lt;kml&amp;gt;&lt;/code&gt; wrapper.&lt;/td&gt;&#xA;          &lt;td&gt;Reported, not changed.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;code&gt;altitude-ignored&lt;/code&gt;&lt;/td&gt;&#xA;          &lt;td&gt;Positions have non-zero altitudes but the altitude mode is clampToGround (the default). Most viewers will draw them on the ground.&lt;/td&gt;&#xA;          &lt;td&gt;Reported, not changed.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;code&gt;large-coordinate-count&lt;/code&gt;&lt;/td&gt;&#xA;          &lt;td&gt;One placemark has more than 100,000 positions. Many web maps slow down or refuse shapes this large.&lt;/td&gt;&#xA;          &lt;td&gt;Reported, not changed.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;code&gt;track-times-mismatch&lt;/code&gt;&lt;/td&gt;&#xA;          &lt;td&gt;A gx:Track has a different number of &lt;code&gt;&amp;lt;when&amp;gt;&lt;/code&gt; times and &lt;code&gt;&amp;lt;gx:coord&amp;gt;&lt;/code&gt; positions. KML requires one time per position.&lt;/td&gt;&#xA;          &lt;td&gt;Reported, not changed.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;code&gt;kmz-duplicate-entry&lt;/code&gt;&lt;/td&gt;&#xA;          &lt;td&gt;The KMZ holds two files with the same name. Programs differ on which one they use.&lt;/td&gt;&#xA;          &lt;td&gt;Fixed: the first copy is kept.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;code&gt;duplicate-ids&lt;/code&gt;&lt;/td&gt;&#xA;          &lt;td&gt;Two elements share the same id. Style references and feature lookups may pick the wrong one.&lt;/td&gt;&#xA;          &lt;td&gt;Reported, not changed.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;h2 id=&#34;info&#34;&gt;Info&lt;/h2&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;th&gt;Code&lt;/th&gt;&#xA;          &lt;th&gt;Meaning&lt;/th&gt;&#xA;          &lt;th&gt;What &lt;code&gt;ikml clean&lt;/code&gt; does&lt;/th&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;code&gt;no-namespace&lt;/code&gt;&lt;/td&gt;&#xA;          &lt;td&gt;The &lt;code&gt;&amp;lt;kml&amp;gt;&lt;/code&gt; root has no namespace. Most programs read it anyway.&lt;/td&gt;&#xA;          &lt;td&gt;Fixed: the KML 2.2 namespace is added.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;code&gt;remote-ref&lt;/code&gt;&lt;/td&gt;&#xA;          &lt;td&gt;A reference points to an https:// address. It works online but the content is not inside the file.&lt;/td&gt;&#xA;          &lt;td&gt;Reported, not changed.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;code&gt;external-file-ref&lt;/code&gt;&lt;/td&gt;&#xA;          &lt;td&gt;A plain .kml file refers to a file next to it on disk (for example an icon). That file must travel with the .kml.&lt;/td&gt;&#xA;          &lt;td&gt;Reported, not changed.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;code&gt;network-link&lt;/code&gt;&lt;/td&gt;&#xA;          &lt;td&gt;The file contains a NetworkLink. Its contents load from elsewhere and are not part of this file.&lt;/td&gt;&#xA;          &lt;td&gt;Reported, not changed.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;code&gt;unused-asset&lt;/code&gt;&lt;/td&gt;&#xA;          &lt;td&gt;A file inside the KMZ is not referenced by the document.&lt;/td&gt;&#xA;          &lt;td&gt;Removed only with &amp;ndash;drop-unused.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;code&gt;unknown-element&lt;/code&gt;&lt;/td&gt;&#xA;          &lt;td&gt;An element iKML does not interpret, such as a vendor extension. It is kept in KML output and dropped from GeoJSON output.&lt;/td&gt;&#xA;          &lt;td&gt;Reported, not changed.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;code&gt;winding&lt;/code&gt;&lt;/td&gt;&#xA;          &lt;td&gt;A GeoJSON ring winds the opposite way from RFC 7946 (outer rings counterclockwise, holes clockwise). Most tools accept either.&lt;/td&gt;&#xA;          &lt;td&gt;Fixed in GeoJSON output: rings are rewound.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;code&gt;foreign-members&lt;/code&gt;&lt;/td&gt;&#xA;          &lt;td&gt;The GeoJSON has members outside the specification. They are kept in GeoJSON output and dropped from KML output.&lt;/td&gt;&#xA;          &lt;td&gt;Reported, not changed.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;code&gt;overlay-present&lt;/code&gt;&lt;/td&gt;&#xA;          &lt;td&gt;The file contains image overlays (GroundOverlay, ScreenOverlay or PhotoOverlay).&lt;/td&gt;&#xA;          &lt;td&gt;Reported, not changed.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;code&gt;model-present&lt;/code&gt;&lt;/td&gt;&#xA;          &lt;td&gt;The file contains 3D models.&lt;/td&gt;&#xA;          &lt;td&gt;Reported, not changed.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;code&gt;has-tracks&lt;/code&gt;&lt;/td&gt;&#xA;          &lt;td&gt;The file contains gx:Track GPS tracks with a time for each point.&lt;/td&gt;&#xA;          &lt;td&gt;Reported, not changed.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;code&gt;has-timestamps&lt;/code&gt;&lt;/td&gt;&#xA;          &lt;td&gt;Placemarks carry TimeStamp or TimeSpan values.&lt;/td&gt;&#xA;          &lt;td&gt;Reported, not changed.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;code&gt;empty-folder&lt;/code&gt;&lt;/td&gt;&#xA;          &lt;td&gt;A Folder or Document has nothing inside.&lt;/td&gt;&#xA;          &lt;td&gt;Reported, not changed.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;code&gt;encoding-converted&lt;/code&gt;&lt;/td&gt;&#xA;          &lt;td&gt;The file is not UTF-8. iKML converted it, and cleaned output is written as UTF-8.&lt;/td&gt;&#xA;          &lt;td&gt;Reported, not changed.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;h2 id=&#34;what-a-conversion-loses&#34;&gt;What a conversion loses&lt;/h2&gt;&#xA;&lt;p&gt;&lt;code&gt;ikml convert&lt;/code&gt; and &lt;code&gt;ikml convert --report&lt;/code&gt; print a loss report for the&#xA;file in hand. For KML to GeoJSON, these are the parts it covers:&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
