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

</content></entry></feed>