<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title>Openstreetmap on YmnukTech</title>
		<link>https://ymnuktech.ru/tags/openstreetmap/</link>
		<description>Recent content in Openstreetmap on YmnukTech</description>
		<generator>Hugo</generator>
		<language>ru</language>
		
		
		
		
			<lastBuildDate>Thu, 16 Jun 2022 00:00:00 +0000</lastBuildDate>
		
			<atom:link href="https://ymnuktech.ru/tags/openstreetmap/index.xml" rel="self" type="application/rss+xml" />
			<item>
				<title>Генерация тайлов своими мозгами</title>
				<link>https://ymnuktech.ru/posts/2022/06/%D0%B3%D0%B5%D0%BD%D0%B5%D1%80%D0%B0%D1%86%D0%B8%D1%8F-%D1%82%D0%B0%D0%B9%D0%BB%D0%BE%D0%B2-%D1%81%D0%B2%D0%BE%D0%B8%D0%BC%D0%B8-%D0%BC%D0%BE%D0%B7%D0%B3%D0%B0%D0%BC%D0%B8/</link>
				<pubDate>Thu, 16 Jun 2022 00:00:00 +0000</pubDate>
				<guid>https://ymnuktech.ru/posts/2022/06/%D0%B3%D0%B5%D0%BD%D0%B5%D1%80%D0%B0%D1%86%D0%B8%D1%8F-%D1%82%D0%B0%D0%B9%D0%BB%D0%BE%D0%B2-%D1%81%D0%B2%D0%BE%D0%B8%D0%BC%D0%B8-%D0%BC%D0%BE%D0%B7%D0%B3%D0%B0%D0%BC%D0%B8/</guid>
				<description>&lt;p&gt;Я уже писал про &lt;a href=&#34;https://ymnuktech.ru/openstreetmap-tile-server&#34;&gt;тайловый сервер&lt;/a&gt; на собственных вычислительных мощностях, но вот что-то захотелось сделать еще что-то интересное и более настраиваемое. Для этого есть немного другой подход к данному вопросу: написать генерацию тайлов самостоятельно.&lt;/p&gt;&#xA;&lt;p&gt;В данном случае получится не совсем полностью собственные алгоритмы, но тоже достаточно занимательно.&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;https://ymnuktech.ru/images/posts/map.png&#34; alt=&#34;Тайл, сгенерированный на NodeJS &amp;#43; mapnik&#34;&gt;&lt;/p&gt;&#xA;&lt;h2 id=&#34;с-чего-начать&#34;&gt;С чего начать?&lt;/h2&gt;&#xA;&lt;p&gt;Первым делом требуется определиться что есть уже готовое. Одним из компонентов является &lt;a href=&#34;https://mapnik.org/&#34;&gt;mapnik&lt;/a&gt;. Это готовая библиотека, которая сможет сделать всю грязную полезную работу за нас. Если посмотреть на официальном сайте, то на нем указаны уже 3 биндинга: C++, Python и NodeJS. Я взял третий вариант, так как с ним все достаточно просто и мне знаком. На Python тоже можно сделать, но я лично использую именно Node. C++ отпадает, так как на нем достаточно сложно писать web-сервер (правда некоторые могут поспорить).&lt;/p&gt;</description>
			</item>
			<item>
				<title>OpenStreetMap — тайловый сервер — ускоряемся</title>
				<link>https://ymnuktech.ru/posts/2022/06/openstreetmap-%D1%82%D0%B0%D0%B9%D0%BB%D0%BE%D0%B2%D1%8B%D0%B9-%D1%81%D0%B5%D1%80%D0%B2%D0%B5%D1%80-%D1%83%D1%81%D0%BA%D0%BE%D1%80%D1%8F%D0%B5%D0%BC%D1%81%D1%8F/</link>
				<pubDate>Mon, 13 Jun 2022 00:00:00 +0000</pubDate>
				<guid>https://ymnuktech.ru/posts/2022/06/openstreetmap-%D1%82%D0%B0%D0%B9%D0%BB%D0%BE%D0%B2%D1%8B%D0%B9-%D1%81%D0%B5%D1%80%D0%B2%D0%B5%D1%80-%D1%83%D1%81%D0%BA%D0%BE%D1%80%D1%8F%D0%B5%D0%BC%D1%81%D1%8F/</guid>
				<description>&lt;p&gt;Про &lt;a href=&#34;https://ymnuktech.ru/openstreetmap-tile-server&#34;&gt;тайловый сервер&lt;/a&gt; я писал в другой статье, по этому повторяться не буду. Тут другая проблема возникла — скорость работы прям удручает…&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;https://ymnuktech.ru/images/posts/map.png&#34; alt=&#34;Карта мира&#34;&gt;&lt;/p&gt;&#xA;&lt;h2 id=&#34;в-чем-причина&#34;&gt;В чем причина?&lt;/h2&gt;&#xA;&lt;p&gt;Если долго разбираться, то в итоге проблема обнаруживается в СУБД. Скорость выполнения запроса 10 секунд — многовато. Когда тайлы начинают складываться, то карта жутко медленно загружается. Значит нужно что-то с ними сделать.&lt;/p&gt;&#xA;&lt;h2 id=&#34;что-получилось&#34;&gt;Что получилось?&lt;/h2&gt;&#xA;&lt;p&gt;Немного &lt;a href=&#34;https://yandex.ru/search/?text=Postgresql&amp;#43;%D0%BE%D1%82%D1%81%D0%BB%D0%B5%D0%B6%D0%B8%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5&amp;#43;%D0%BC%D0%B5%D0%B4%D0%BB%D0%B5%D0%BD%D0%BD%D1%8B%D1%85&amp;#43;%D0%B7%D0%B0%D0%BF%D1%80%D0%BE%D1%81%D0%BE%D0%B2&amp;amp;lr=36&#34;&gt;поотлавливав запросы в логах&lt;/a&gt;, я начал находить запросы, которые выполнялись по 3-4 секуды, а некоторые вообще 10-25 секунд. Это слишком много, даже если мы закэшируем все возможные варианты, ждать придется долго. В итоге у меня получился такой набор индексов:&lt;/p&gt;</description>
			</item>
	</channel>
</rss>
