<?xml version="1.0" encoding="utf-8" ?><rss version="2.0" xmlns:tt="http://teletype.in/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:media="http://search.yahoo.com/mrss/"><channel><title>angkasawan2007</title><generator>teletype.in</generator><description><![CDATA[angkasawan2007]]></description><image><url>https://img1.teletype.in/files/c1/f6/c1f6cb2e-9b76-4a77-bd87-54783e238837.png</url><title>angkasawan2007</title><link>https://teletype.in/@angkasawan</link></image><link>https://teletype.in/@angkasawan?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=angkasawan</link><atom:link rel="self" type="application/rss+xml" href="https://teletype.in/rss/angkasawan?offset=0"></atom:link><atom:link rel="next" type="application/rss+xml" href="https://teletype.in/rss/angkasawan?offset=10"></atom:link><atom:link rel="search" type="application/opensearchdescription+xml" title="Teletype" href="https://teletype.in/opensearch.xml"></atom:link><pubDate>Wed, 29 Jul 2026 09:57:03 GMT</pubDate><lastBuildDate>Wed, 29 Jul 2026 09:57:03 GMT</lastBuildDate><item><guid isPermaLink="true">https://teletype.in/@angkasawan/w1nj5lG14Dl</guid><link>https://teletype.in/@angkasawan/w1nj5lG14Dl?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=angkasawan</link><comments>https://teletype.in/@angkasawan/w1nj5lG14Dl?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=angkasawan#comments</comments><dc:creator>angkasawan</dc:creator><title>Ленивый админский GEOINT 211</title><pubDate>Sun, 08 Jun 2025 11:50:02 GMT</pubDate><media:content medium="image" url="https://img3.teletype.in/files/64/2d/642dc507-39a4-4612-8066-03e8348fa4f9.png"></media:content><description><![CDATA[<img src="https://img3.teletype.in/files/ab/82/ab82a774-74aa-4b4b-820e-0c9edf0cd6c5.png"></img>С помощью Google Lens можно получить картинку чуть получше качества на Pinterest.]]></description><content:encoded><![CDATA[
  <figure id="z0cm" class="m_original">
    <img src="https://img3.teletype.in/files/ab/82/ab82a774-74aa-4b4b-820e-0c9edf0cd6c5.png" width="736" />
  </figure>
  <p id="kL2d">С помощью Google Lens можно получить картинку чуть получше качества <a href="https://i.pinimg.com/736x/62/e3/ba/62e3ba1449a6fdaeb304829703d86ac4.jpg" target="_blank">на Pinterest</a>. </p>
  <p id="W9Bw">Ещё там выдаются посты про город Камакура, но в регионе Канто таких столбов как справа <a href="https://www.youtube.com/watch?v=nhhqvdOsWlM" target="_blank">ВООБЩЕ НЕТ</a>, <a href="https://www.plonkit.net/japan#2" target="_blank">это больше похоже на Сикоку</a></p>
  <figure id="SNtx" class="m_custom">
    <img src="https://img1.teletype.in/files/87/58/8758c16f-6266-42a3-b2a7-3c389a509f02.png" width="178" />
  </figure>
  <figure id="uQ9Y" class="m_original">
    <img src="https://img4.teletype.in/files/b6/e5/b6e546df-4c4d-4281-85d4-ef2fc3962708.png" width="320" />
  </figure>
  <p id="95C5">Видим отличную тень от солнца. Мы находимся в северном полушарии, так что предполагаем, что солнце светит с юга. Можно попробовать построить план местности как бы выглядел вид со спутника.</p>
  <p id="BMKb">Основные моменты: две парковки, кривой перекресток, асфальт синего цвета, зеленая полоса на асфальте, три люка (на спутнике с качеством 30см скорее всего будут плохо видны)</p>
  <figure id="cKW8" class="m_original">
    <img src="https://img2.teletype.in/files/14/8a/148a2d64-38bc-42b1-8568-6a655efee9ba.png" width="736" />
  </figure>
  <p id="m2qs">Получается примерно такая картина:</p>
  <figure id="G6l8" class="m_original">
    <img src="https://img2.teletype.in/files/11/a4/11a43962-37c6-439e-b6f7-7576ba7e5f2a.png" width="1229" />
  </figure>
  <p id="yQ2x">Дальше начинается самое интересное. Брутить все перекрестки в японии не вариант, поэтому я попытался найти все парковки AMANO. В OpenStreet Map выборочный поиск дал понять, что парковки AMANO никто не размечал. В  мобильном приложении AMANO тоже карты парковок в Японии нету. Но чутка погуглив выходим на такую замечательную карту: <a href="https://www.locationsmart.org/?tag=_service_parking_amano&lat=35.35021868957501&lon=139.85197334628057&z=6" target="_blank">https://www.locationsmart.org/?tag=_service_parking_amano&amp;lat=35.35021868957501&amp;lon=139.85197334628057&amp;z=6</a></p>
  <figure id="XODs" class="m_original">
    <img src="https://img3.teletype.in/files/e7/71/e77104ab-cc36-4b5b-8c14-c48350fb5979.png" width="2476" />
  </figure>
  <p id="RN6B">Выборочный поиск в Камакуре не дал результатов, наше место явно не там, где писали. Дальше с картой начинаются проблемы: она показывает места не все сразу, нужно приближать чтобы увидеть, если две точки находятся рядом. Я начал думать как спарсить с карты все точки и полез смотреть JSки, которые тянут точки на карту.</p>
  <figure id="0V2P" class="m_original">
    <img src="https://img2.teletype.in/files/18/1e/181e5466-34bd-433e-a859-a127bc26d215.png" width="1160" />
  </figure>
  <p id="6ND9"> По итогу в DevTools в Network с включенным Preserve Log обнаруживаем нужный запрос: </p>
  <figure id="J71k" class="m_original">
    <img src="https://img3.teletype.in/files/63/79/63797e7e-43de-4868-b08c-d4a26c2c3a5f.png" width="2225" />
  </figure>
  <p id="Ywyz">Зная парковки можно парсить разными способами, я решил через JS прямо в консоли браузера</p>
  <figure id="WIFw" class="m_custom">
    <img src="https://img4.teletype.in/files/7e/2f/7e2f310a-4b36-4605-8f4f-f19828dbd1ea.png" width="1032" />
  </figure>
  <p id="Di3i">Все, что нам нужно изменить в оригинальном запросе, это параметры координат n,s,e,w на максимально возможные. В результате получаем JSON из 318 координат.</p>
  <p id="zjCA">Сам код:</p>
  <p id="Ga9U"><code>fetch(&quot;/ttypeg/php/g.php?tag=_service_parking_amano&amp;n=90&amp;s=-90&amp;w=-180&amp;e=180&amp;z=14&amp;epoch=1749148366324&quot;)<br />  .then(res =&gt; res.json())<br />  .then(json =&gt; {<br />    // json.shops – это массив объектов, каждый из которых примерно имеет вид:<br />    // { shop_id: 12345, lat: 35.6895, lon: 139.6917, icon: &quot;...&quot;, hide: ..., ... }<br />    <br />    const allCoords = json.shops.map(item =&gt; ({<br />      shop_id: item.shop_id,<br />      lat:      Number(item.lat),<br />      lon:      Number(item.lon),<br />      // Если в JSON есть другое поле с названием, можно его тоже добавить<br />      name:     item.n   || item.name || &quot;&quot;<br />    }));<br />    <br />    console.table(allCoords);<br />    console.log(&quot;JSON для копирования:\n&quot;, JSON.stringify(allCoords, null, 2));<br />  })<br />  .catch(err =&gt; console.error(&quot;Ошибка при fetch g.php:&quot;, err));</code></p>
  <p id="ZGbR">Дальше надо преобразовать JSON в KML чтобы скормить его в проект Google Earth. Для этого я наГПТшил скриптик на питоне:</p>
  <p id="koAa"><code>import json<br />import os</code></p>
  <p id="Ef5f"><code># Скрипт конвертирует JSON-массив точек в KML-файл для Google Earth.<br /># Ожидается, что рядом со скриптом лежит файл points.json со структурой:<br /># [<br />#   {<br />#     &quot;shop_id&quot;: 759141,<br />#     &quot;lat&quot;: 24.0612443,<br />#     &quot;lon&quot;: 123.773374,<br />#     &quot;name&quot;: &quot;&quot;<br />#   },<br />#   ...<br /># ]</code></p>
  <p id="lRSZ"><code>def main():<br />    input_json_file = &#x27;path/to/ponts.json&#x27;  # Имя вашего JSON-файла<br />    output_kml_file = &#x27;path/to/points.kml&#x27;   # Имя результирующего KML-файла</code></p>
  <p id="8NVD"><code>    # 1. Читаем JSON<br />    if not os.path.exists(input_json_file):<br />        print(f&quot;Файл &#x27;{input_json_file}&#x27; не найден.&quot;)<br />        print(&quot;Создайте файл points.json в той же папке, где лежит скрипт, &quot;<br />              &quot;и вставьте туда массив точек в формате JSON.&quot;)<br />        return</code></p>
  <p id="VsUG"><code>    with open(input_json_file, &#x27;r&#x27;, encoding=&#x27;utf-8&#x27;) as f:<br />        data = json.load(f)</code></p>
  <p id="aC2Z"><code>    # 2. Заголовок и хвост KML<br />    kml_header = &#x27;&#x27;&#x27;&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;<br />&lt;kml xmlns=&quot;http://www.opengis.net/kml/2.2&quot;&gt;<br />  &lt;Document&gt;<br />&#x27;&#x27;&#x27;<br />    kml_footer = &#x27;&#x27;&#x27;  &lt;/Document&gt;<br />&lt;/kml&gt;<br />&#x27;&#x27;&#x27;</code></p>
  <p id="Hys9"><code>    # 3. Формируем Placemark для каждой точки<br />    placemarks = []<br />    for item in data:<br />        shop_id = item.get(&quot;shop_id&quot;, &quot;&quot;)<br />        lat = item.get(&quot;lat&quot;)<br />        lon = item.get(&quot;lon&quot;)<br />        name = item.get(&quot;name&quot;, &quot;&quot;)<br />        # Если name пусто, подставим shop_id как имя<br />        placemark_name = name if name else str(shop_id)</code></p>
  <p id="jyul"><code>        placemark = f&#x27;&#x27;&#x27;    &lt;Placemark&gt;<br />      &lt;name&gt;{placemark_name}&lt;/name&gt;<br />      &lt;Point&gt;<br />        &lt;coordinates&gt;{lon},{lat},0&lt;/coordinates&gt;<br />      &lt;/Point&gt;<br />    &lt;/Placemark&gt;<br />&#x27;&#x27;&#x27;<br />        placemarks.append(placemark)</code></p>
  <p id="S9kw"><code>    # 4. Собираем полный KML-контент<br />    kml_content = kml_header + &quot;&quot;.join(placemarks) + kml_footer</code></p>
  <p id="jsWu"><code>    # 5. Записываем в файл<br />    with open(output_kml_file, &#x27;w&#x27;, encoding=&#x27;utf-8&#x27;) as f:<br />        f.write(kml_content)</code></p>
  <p id="x7pH"><code>    print(f&quot;KML-файл &#x27;{output_kml_file}&#x27; успешно создан. Всего точек: {len(placemarks)}&quot;)</code></p>
  <p id="2Flq"><code><br />if __name__ == &quot;__main__&quot;:<br />    main()</code></p>
  <p id="ygQr">Кормим получившийся KML в Землю и видим следующую картину:</p>
  <figure id="KchX" class="m_custom">
    <img src="https://img4.teletype.in/files/76/e4/76e43f51-3fa2-4bb5-86fb-2cf94405e5b7.png" width="1364" />
  </figure>
  <p id="Lip9">Открываем спутник, открываем наш план местности и начинаем брутить 318 точек на карте. Спустя недолгое время находим точку в городе Фукуока на Кюсю:</p>
  <figure id="hVXg" class="m_custom">
    <img src="https://img1.teletype.in/files/8c/6a/8c6a8c1a-8a3d-4448-bce6-fd91875e047b.png" width="1356" />
  </figure>
  <p id="tSho">Очень похоже! Смотрим Google View:</p>
  <figure id="taKC" class="m_custom">
    <img src="https://img4.teletype.in/files/f6/7a/f67aa99a-5120-47be-9d99-89770b534173.jpeg" width="1264" />
  </figure>
  <p id="WPMp">И оригинал:</p>
  <figure id="fwj1" class="m_original">
    <img src="https://img1.teletype.in/files/09/67/0967c7db-4436-49a8-96e7-ed8a20b7bfac.png" width="736" />
  </figure>
  <p id="q7rU">Итоговый ответ: <a href="https://www.google.com/maps/@33.6190145,130.4209487,52m" target="_blank">33.61901370153112, 130.42091864402323</a></p>
  <p id="JPqQ">На весь этот процесс ушло часа ~2.5, что в общем то достаточно быстро</p>

]]></content:encoded></item></channel></rss>