{"id":304723,"date":"2020-06-02T15:01:46","date_gmt":"2020-06-02T15:01:46","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=304723"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=304723","title":{"rendered":"\u0416\u0435\u0441\u0442\u043a\u0438\u0439 \u0446\u0438\u0433\u0443\u043d \u0441 \u0443\u0441\u043b\u043e\u0432\u043d\u044b\u043c\u0438 \u0437\u043d\u0430\u043a\u0430\u043c\u0438 \u0438\u043b\u0438 \u0437\u0430\u0447\u0435\u043c \u043d\u0443\u0436\u0435\u043d geometry generator"},"content":{"rendered":"\n<div class=\"post__text post__text-html post__text_v1\" id=\"post-content-body\" data-io-article-url=\"https:\/\/habr.com\/ru\/post\/504986\/\">\n<p><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/070\/b4a\/b4d\/070b4ab4d68fa8fa7238acdc2d7567a0.jpg\"><br \/>  \u0422\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u044f \u0437\u0430\u043a\u0430\u0437\u0447\u0438\u043a\u0430 \u043a \u0443\u0441\u043b\u043e\u0432\u043d\u044b\u043c \u043e\u0431\u043e\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f\u043c \u043d\u0430 \u043a\u0430\u0440\u0442\u0430\u0445 \u043a\u0430\u0436\u0443\u0442\u0441\u044f \u0432\u0430\u043c \u043d\u0435\u0440\u0435\u0430\u043b\u044c\u043d\u044b\u043c\u0438? \u0414\u0430\u043b\u044c\u0448\u0435 \u0432\u044b \u0443\u0437\u043d\u0430\u0435\u0442\u0435, \u043a\u0430\u043a \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e geometry generator, QGIS \u0438 Python \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0442\u0430\u043a, \u0447\u0442\u043e\u0431\u044b \u0432\u0430\u0448\u0438 \u0443\u0441\u043b\u043e\u0432\u043d\u0438\u043a\u0438 \u0431\u044b\u043b\u0438 \u043b\u0443\u0447\u0448\u0435 \u0432\u0441\u0435\u0445.<\/p>\n<p><a name=\"habracut\"><\/a>  <\/p>\n<h1 id=\"vvedenie\">\u0412\u0432\u0435\u0434\u0435\u043d\u0438\u0435<\/h1>\n<p>  <\/p>\n<p>\u0412\u0441\u0435\u043c \u043f\u0440\u0438\u0432\u0435\u0442! \u041c\u0435\u043d\u044f \u0437\u043e\u0432\u0443\u0442 \u041c\u0438\u0445\u0430\u0438\u043b, \u043c\u043e\u0439 \u043e\u0442\u0434\u0435\u043b \u0437\u0430\u043d\u0438\u043c\u0430\u0435\u0442\u0441\u044f \u0440\u0435\u0448\u0435\u043d\u0438\u044f\u043c\u0438, \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u044b\u043c\u0438 \u0441 \u0433\u0435\u043e\u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u043c\u0438 \u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u044f\u043c\u0438, \u0432 \u0442\u043e\u043c \u0447\u0438\u0441\u043b\u0435, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u043e\u0439 \u043c\u043e\u0434\u0443\u043b\u0435\u0439 \u0434\u043b\u044f QGIS \u043d\u0430 Python \u0438 PyQt. \u0421\u0440\u0435\u0434\u0438 \u043f\u0440\u043e\u0447\u0435\u0433\u043e, \u0432 \u0441\u043b\u043e\u0436\u043d\u044b\u0445 \u0441\u043b\u0443\u0447\u0430\u044f\u0445, \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0440\u0430\u0437\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0442\u044c \u0438 \u0443\u0441\u043b\u043e\u0432\u043d\u044b\u0435 \u043e\u0431\u043e\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f (\u0441\u0442\u0438\u043b\u0438) \u0434\u043b\u044f \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0445 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432 \u043d\u0430 \u043a\u0430\u0440\u0442\u0435. \u0412 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u044f \u0445\u043e\u0447\u0443 \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u0430\u0442\u044c \u043e\u0431 \u043e\u0434\u043d\u043e\u0439 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e\u0439 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 QGIS \u043f\u0440\u0438 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0438 \u0443\u0441\u043b\u043e\u0432\u043d\u044b\u0445 \u043e\u0431\u043e\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439, \u0430 \u0438\u043c\u0435\u043d\u043d\u043e \u043e <strong>geometry generator<\/strong> \u2014 \u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440\u0435 \u0433\u0435\u043e\u043c\u0435\u0442\u0440\u0438\u0438. \u0412 \u0441\u0435\u0442\u0438 \u043d\u0435 \u0442\u0430\u043a \u043c\u043d\u043e\u0433\u043e \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u043e\u0432 \u043d\u0430 \u044d\u0442\u0443 \u0442\u0435\u043c\u0443 \u0438 \u043e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u0443\u044e \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044e \u044f \u0431\u044b \u043d\u0435 \u043d\u0430\u0437\u0432\u0430\u043b \u0438\u0441\u0447\u0435\u0440\u043f\u044b\u0432\u0430\u044e\u0449\u0435\u0439. \u041d\u0435 \u043f\u0440\u0435\u0442\u0435\u043d\u0434\u0443\u044f \u043d\u0430 \u043f\u043e\u043b\u043d\u043e\u0442\u0443 \u0438 \u0438\u0441\u0442\u0438\u043d\u0443 \u0445\u043e\u0442\u0435\u043b \u0431\u044b \u043f\u043e\u0434\u0435\u043b\u0438\u0442\u044c\u0441\u044f \u0441 \u0441\u043e\u043e\u0431\u0449\u0435\u0441\u0442\u0432\u043e\u043c \u0442\u0435\u043c\u0438 \u043d\u0430\u0431\u043b\u044e\u0434\u0435\u043d\u0438\u044f\u043c\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u043e\u044f\u0432\u0438\u043b\u0438\u0441\u044c \u043f\u043e\u0441\u043b\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440\u0430 \u0433\u0435\u043e\u043c\u0435\u0442\u0440\u0438\u0439.<\/p>\n<p>  <\/p>\n<h1 id=\"a-zachem-ono-nado\">\u0410 \u0437\u0430\u0447\u0435\u043c \u00ab\u043e\u043d\u043e\u00bb \u043d\u0430\u0434\u043e?<\/h1>\n<p>  <\/p>\n<p>QGIS \u0441\u0442\u0430\u0440\u0430\u0435\u0442\u0441\u044f \u0447\u0435\u0442\u043a\u043e \u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u044c \u043c\u043e\u0434\u0435\u043b\u0438 MVC \u0438 \u0434\u0430\u043d\u043d\u044b\u0435 \u043e\u0442\u0434\u0435\u043b\u0435\u043d\u044b \u043e\u0442 \u0438\u0445 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u044f. \u042d\u0442\u043e \u043f\u0440\u043e\u0441\u043b\u0435\u0436\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0432\u0435\u0437\u0434\u0435, \u0432 \u0442.\u0447. \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0432 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0438 Model-Based \u0432\u0438\u0434\u0436\u0435\u0442\u043e\u0432 PyQt \u0434\u043b\u044f \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430. \u0410\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u044b\u0439 \u043f\u043e\u0434\u0445\u043e\u0434 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0438 \u0434\u043b\u044f \u0432\u0438\u0437\u0443\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0445 \u0434\u0430\u043d\u043d\u044b\u0445, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0447\u0435\u0440\u0435\u0437 \u0441\u0442\u0438\u043b\u0438. \u0421\u0442\u0438\u043b\u044c \u0432\u043b\u0438\u044f\u0435\u0442 \u043d\u0430 \u0442\u043e, \u043a\u0430\u043a \u0431\u0443\u0434\u0443\u0442 \u0432\u044b\u0433\u043b\u044f\u0434\u0435\u0442\u044c \u043e\u0431\u044a\u0435\u043a\u0442\u044b \u043d\u0430 \u043a\u0430\u0440\u0442\u0435.<\/p>\n<p>  <\/p>\n<p>\u0421\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0435 \u0441\u0442\u0438\u043b\u0438 \u0438\u043c\u0435\u044e\u0442 \u043e\u0447\u0435\u043d\u044c \u0431\u043e\u0433\u0430\u0442\u044b\u0435 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u0432 QGIS:<\/p>\n<p>  <\/p>\n<p><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/nz\/m5\/rs\/nzm5rswhv7f0bo5b4ehqzlbzupk.png\" alt=\"\u041f\u0440\u0438\u043c\u0435\u0440 \u0441\u0442\u0438\u043b\u0435\u0439 \u0434\u043b\u044f \u0442\u043e\u0447\u043a\u0438, \u043b\u0438\u043d\u0438\u0438 \u0438 \u043f\u043e\u043b\u0438\u0433\u043e\u043d\u0430\"><\/p>\n<p>  <\/p>\n<p>\u041f\u043e\u0447\u0435\u043c\u0443 \u043c\u043e\u0436\u0435\u0442 \u043d\u0435 \u0445\u0432\u0430\u0442\u0430\u0442\u044c \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0435\u0439 \u043e\u0431\u044b\u0447\u043d\u044b\u0445 \u0441\u0442\u0438\u043b\u0435\u0439?<\/p>\n<p>  <\/p>\n<p>\u0412\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0435\u0439 \u043e\u0431\u044b\u0447\u043d\u044b\u0445 \u0441\u0442\u0438\u043b\u0435\u0439 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0434\u043b\u044f 99% \u0432\u0441\u0435\u0445 \u0441\u043b\u0443\u0447\u0430\u0435\u0432. \u041d\u041e! \u0415\u0441\u043b\u0438 \u0432\u044b \u0441\u0442\u043e\u043b\u043a\u043d\u0443\u043b\u0438\u0441\u044c \u0441 \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u0435\u0439, \u043a\u043e\u0433\u0434\u0430 \u0434\u0430\u043d\u043d\u044b\u0435 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u044b \u043e\u0434\u043d\u0438\u043c \u0442\u0438\u043f\u043e\u043c \u0433\u0435\u043e\u043c\u0435\u0442\u0440\u0438\u0438 (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043f\u043e\u043b\u0438\u0433\u043e\u043d\u043e\u043c), \u0430 \u0434\u043b\u044f \u0432\u0438\u0437\u0443\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0434\u0440\u0443\u0433\u043e\u0439 (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043b\u0438\u043d\u0438\u044f), \u0438\u043b\u0438 \u043a\u043e\u0433\u0434\u0430 \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u044f \u043a \u0432\u0438\u0437\u0443\u0430\u043b\u044c\u043d\u043e\u043c\u0443 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044e \u043e\u0431\u044a\u0435\u043a\u0442\u0430 \u043e\u0447\u0435\u043d\u044c \u0441\u043b\u043e\u0436\u043d\u044b, \u0442\u043e \u0442\u0443\u0442 \u0432\u044b\u0440\u0443\u0447\u0430\u0435\u0442 \u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440 \u0433\u0435\u043e\u043c\u0435\u0442\u0440\u0438\u0438.<\/p>\n<p>  <\/p>\n<p>\u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043e\u0431\u044b\u0447\u043d\u044b\u0439 \u0441\u0442\u0438\u043b\u044c \u043d\u0435 \u043f\u043e\u0437\u0432\u043e\u043b\u0438\u0442 \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0442\u0430\u043a\u043e\u0439 \u043f\u043e\u043b\u0438\u0433\u043e\u043d:<\/p>\n<p>  <\/p>\n<p><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/dg\/ek\/mw\/dgekmwb9lbfg6yv8v9vfvzgkomu.png\"><\/p>\n<p>  <\/p>\n<p>\u0410 \u0442\u0430\u043a\u0438\u0435 \u00ab\u0437\u0443\u0431\u044b\u00bb \u043c\u043e\u0436\u043d\u043e \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440\u0430 \u0433\u0435\u043e\u043c\u0435\u0442\u0440\u0438\u0438:<\/p>\n<p>  <\/p>\n<p><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/td\/vp\/_c\/tdvp_cxxniah6msvxpaomoe1h7y.png\" alt=\"\u00ab\u0417\u0443\u0431\u044b\u00bb\"><\/p>\n<p>  <\/p>\n<p>\u042d\u0442\u043e \u0432\u0441\u0435 \u0440\u0435\u0430\u043b\u044c\u043d\u044b\u0435 \u043f\u0440\u0438\u043c\u0435\u0440\u044b \u0438\u0437 \u0441\u0438\u0441\u0442\u0435\u043c\u044b. \u0412 \u0441\u043b\u043e\u0436\u043d\u044b\u0445 \u0441\u043b\u0443\u0447\u0430\u044f\u0445 \u0432\u044b\u0440\u0443\u0447\u0430\u0435\u0442 \u0438\u043c\u0435\u043d\u043d\u043e \u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440 \u0433\u0435\u043e\u043c\u0435\u0442\u0440\u0438\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c \u043f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0431\u0435\u0437\u0433\u0440\u0430\u043d\u0438\u0447\u043d\u044b\u0435, \u043f\u043e \u0441\u043b\u043e\u0436\u043d\u043e\u0441\u0442\u0438, \u0441\u0442\u0438\u043b\u0438 (\u043d\u043e \u043d\u0435 \u0431\u0443\u0434\u0435\u043c \u0443\u0432\u043b\u0435\u043a\u0430\u0442\u044c\u0441\u044f \u0438 \u0437\u0430\u0431\u044b\u0432\u0430\u0442\u044c \u043f\u0440\u043e \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c). \u0414\u043b\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u043d\u043e\u0432\u043e\u0439 \u0433\u0435\u043e\u043c\u0435\u0442\u0440\u0438\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0438\u0439 \u044f\u0437\u044b\u043a \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u0439 QGIS \u0438\u043b\u0438 Python.<\/p>\n<p>  <\/p>\n<h2 id=\"liricheskoe-zamechanie\">\u041b\u0438\u0440\u0438\u0447\u0435\u0441\u043a\u043e\u0435 \u0437\u0430\u043c\u0435\u0447\u0430\u043d\u0438\u0435<\/h2>\n<p>  <\/p>\n<p>\u0418\u0437\u043b\u0438\u0448\u043d\u0435 \u043d\u0430\u043f\u043e\u043c\u0438\u043d\u0430\u0442\u044c, \u043d\u043e, \u0432\u0441\u0435-\u0442\u0430\u043a\u0438, \u0434\u043e\u043b\u0436\u0435\u043d \u0435\u0449\u0435 \u0440\u0430\u0437 \u043e\u0442\u043c\u0435\u0442\u0438\u0442\u044c, \u0447\u0442\u043e <strong>\u043e\u0431\u044a\u0435\u043a\u0442, \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u044b\u0439 \u043e\u0442 \u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440\u0430 \u0433\u0435\u043e\u043c\u0435\u0442\u0440\u0438\u0438, \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043f\u0440\u043e\u0441\u0442\u043e \u0432\u0438\u0437\u0443\u0430\u043b\u044c\u043d\u044b\u043c \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0435\u043c \u043e\u0431\u044a\u0435\u043a\u0442\u0430 \u043c\u043e\u0434\u0435\u043b\u0438 \u0438 \u043c\u043e\u0436\u0435\u0442 (!) \u043d\u0435 \u0441\u043e\u0432\u043f\u0430\u0434\u0430\u0442\u044c \u0441 \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u043c \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u043c \u043d\u0438 \u043f\u043e \u0442\u0438\u043f\u0443 \u0433\u0435\u043e\u043c\u0435\u0442\u0440\u0438\u0438, \u043d\u0438 \u043f\u043e \u043c\u0435\u0441\u0442\u043e\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u044e, \u043d\u0438 \u043f\u043e \u0440\u0430\u0437\u043c\u0435\u0440\u0430\u043c<\/strong>! \u0412\u0441\u0435 \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0435 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u044e\u0442\u0441\u044f \u0441 \u0434\u0430\u043d\u043d\u044b\u043c\u0438 \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u043e\u0431\u044a\u0435\u043a\u0442\u0430, \u0430 \u043d\u0435 \u0441 \u0435\u0433\u043e \u0432\u0438\u0437\u0443\u0430\u043b\u044c\u043d\u044b\u043c \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0435\u043c.<\/p>\n<p>  <\/p>\n<h2 id=\"dopuscheniya\">\u0414\u043e\u043f\u0443\u0449\u0435\u043d\u0438\u044f<\/h2>\n<p>  <\/p>\n<ul>\n<li>\u041f\u0440\u043e\u0435\u043a\u0442 \u0438 \u043f\u0440\u0438\u043c\u0435\u0440\u044b \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043b\u0435\u043d\u044b \u0432 QGIS \u0432\u0435\u0440\u0441\u0438\u0438 3.10.6 \u043d\u0430 Ubuntu 18.04.<\/li>\n<li>\u0412 \u043f\u0440\u043e\u0435\u043a\u0442\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u00ab\u043f\u043b\u043e\u0441\u043a\u0430\u044f\u00bb \u0441\u0438\u0441\u0442\u0435\u043c\u0430 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442 UTM \u0437\u043e\u043d\u0430 37N, \u0441\u0434\u0435\u043b\u0430\u043d\u043e \u044d\u0442\u043e \u0434\u043b\u044f \u0443\u043f\u0440\u043e\u0449\u0435\u043d\u0438\u044f \u0447\u0430\u0441\u0442\u0438 \u043f\u0440\u0438\u043c\u0435\u0440\u043e\u0432 \u0438 \u043e\u0431\u0449\u0435\u0433\u043e \u0443\u0434\u043e\u0431\u0441\u0442\u0432\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0434\u043b\u0438\u043d \u0438 \u043f\u043b\u043e\u0449\u0430\u0434\u0435\u0439 \u0432 \u043c\u0435\u0442\u0440\u0430\u0445. <\/li>\n<li>\u0421\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043f\u0440\u043e\u0435\u043a\u0442 \u043d\u0430 GitHub \u0432 \u043a\u043e\u043d\u0446\u0435 \u0441\u0442\u0430\u0442\u044c\u0438.<\/li>\n<li>\u0421\u043b\u043e\u0432\u043e \u00ab\u0433\u0435\u043e\u043c\u0435\u0442\u0440\u0438\u044f\u00bb \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0441\u043b\u0435\u043d\u0433\u043e\u0432\u043e\u0433\u043e \u0441\u043b\u043e\u0432\u0430, \u043e\u0431\u043e\u0437\u043d\u0430\u0447\u0430\u044e\u0449\u0435\u0433\u043e \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0435 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u0432\u0435\u043a\u0442\u043e\u0440\u043d\u043e\u0433\u043e \u043e\u0431\u044a\u0435\u043a\u0442\u0430.<\/li>\n<li>\u0411\u0430\u0437\u043e\u0432\u044b\u0435 \u0432\u043e\u043f\u0440\u043e\u0441\u044b, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043a\u0430\u043a \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440 \u0433\u0435\u043e\u043c\u0435\u0442\u0440\u0438\u0438 \u0432 \u0441\u0442\u0438\u043b\u044c \u0438\u043b\u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u0446\u0432\u0435\u0442 \u043b\u0438\u043d\u0438\u0438, \u0440\u0430\u0441\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u0442\u044c\u0441\u044f \u043d\u0435 \u0431\u0443\u0434\u0443\u0442.<\/li>\n<\/ul>\n<p>  <\/p>\n<h2 id=\"tipy-geometrii-geometry-generator\">\u0422\u0438\u043f\u044b \u0433\u0435\u043e\u043c\u0435\u0442\u0440\u0438\u0438 geometry generator<\/h2>\n<p>  <\/p>\n<p>\u0413\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440 \u0433\u0435\u043e\u043c\u0435\u0442\u0440\u0438\u0438 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u2014 \u0432\u0435\u043a\u0442\u043e\u0440\u043d\u0443\u044e \u0433\u0435\u043e\u043c\u0435\u0442\u0440\u0438\u044e \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u043e\u0433\u043e \u0442\u0438\u043f\u0430.<br \/>  \u0421 \u0442\u0438\u043f\u0430\u043c\u0438 \u043d\u0435\u0442 \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0435\u043e\u0436\u0438\u0434\u0430\u043d\u043d\u043e\u0433\u043e, \u0438\u0445 \u0432\u0441\u0435\u0433\u043e \u0442\u0440\u0438: \u0442\u043e\u0447\u043a\u0430\/\u043c\u0443\u043b\u044c\u0442\u0438\u0442\u043e\u0447\u043a\u0430, \u043b\u0438\u043d\u0438\u044f\/\u043c\u0443\u043b\u044c\u0442\u0438\u043b\u0438\u043d\u0438\u044f, \u043f\u043e\u043b\u0438\u0433\u043e\u043d\/\u043c\u0443\u043b\u044c\u0442\u0438\u043f\u043e\u043b\u0438\u0433\u043e\u043d. \u0413\u0435\u043e\u043c\u0435\u0442\u0440\u0438\u044f, \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0435\u043c\u0430\u044f \u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440\u043e\u043c, \u0434\u043e\u043b\u0436\u043d\u0430 \u0441\u043e\u0432\u043f\u0430\u0434\u0430\u0442\u044c \u0441 \u0435\u0433\u043e \u0442\u0438\u043f\u043e\u043c, \u0438\u043d\u0430\u0447\u0435 \u043e\u043d\u0430 \u043d\u0435 \u0431\u0443\u0434\u0435\u0442 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0430, \u0434\u0430\u0436\u0435 \u0435\u0441\u043b\u0438 \u0441\u043e\u0437\u0434\u0430\u043d\u043d\u0430\u044f \u0433\u0435\u043e\u043c\u0435\u0442\u0440\u0438\u044f \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u0430. \u041f\u043e\u0432\u0442\u043e\u0440\u044e\u0441\u044c \u0435\u0449\u0435 \u0440\u0430\u0437: \u0442\u0438\u043f \u0433\u0435\u043e\u043c\u0435\u0442\u0440\u0438\u0438, \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u043c\u043e\u0439 \u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440\u043e\u043c, \u043c\u043e\u0436\u0435\u0442 \u043d\u0435 \u0441\u043e\u0432\u043f\u0430\u0434\u0430\u0442\u044c \u0441 \u0442\u0438\u043f\u043e\u043c \u0433\u0435\u043e\u043c\u0435\u0442\u0440\u0438\u0438 \u0438\u0441\u0445\u043e\u0434\u043d\u043e\u0433\u043e \u043e\u0431\u044a\u0435\u043a\u0442\u0430 \u043c\u043e\u0434\u0435\u043b\u0438.<\/p>\n<p>  <\/p>\n<h2 id=\"kak-gotovit\">\u041a\u0430\u043a \u00ab\u0433\u043e\u0442\u043e\u0432\u0438\u0442\u044c\u00bb?<\/h2>\n<p>  <\/p>\n<p>\u041f\u043e\u0441\u043b\u0435 \u0442\u043e\u0433\u043e, \u043a\u0430\u043a \u0432\u044b \u0432\u044b\u0431\u0440\u0430\u043b\u0438 \u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440 \u0433\u0435\u043e\u043c\u0435\u0442\u0440\u0438\u0438 \u0438 \u0435\u0433\u043e \u0442\u0438\u043f, \u0432\u0430\u043c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c <strong>\u043e\u0434\u043d\u043e<\/strong> \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u0435 (expression), \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0432\u043e\u0437\u0432\u0440\u0430\u0442\u0438\u0442 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u0443\u044e \u0433\u0435\u043e\u043c\u0435\u0442\u0440\u0438\u044e. \u0421\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0441 \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u0439 \u043e\u043f\u0438\u0441\u0430\u043d \u0432 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438 <a href=\"https:\/\/docs.qgis.org\/3.10\/en\/docs\/user_manual\/working_with_vector\/expression.html#vector-expressions\" rel=\"nofollow\">Expressions<\/a>, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u0439 \u0432 Python \u043e\u043f\u0438\u0441\u0430\u043d\u043e \u0432 \u0440\u0430\u0437\u0434\u0435\u043b\u0435 <a href=\"https:\/\/docs.qgis.org\/3.10\/en\/docs\/pyqgis_developer_cookbook\/expressions.html?highlight=expressions\" rel=\"nofollow\">Expressions, Filtering and Calculating Values<\/a>.<\/p>\n<p>  <\/p>\n<p>\u042f\u0437\u044b\u043a \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u0439, \u0444\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438, \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u044b\u043c \u044f\u0437\u044b\u043a\u043e\u043c. \u0412\u0441\u0435 \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u2014 \u044d\u0442\u043e \u0438\u043b\u0438 \u043b\u0438\u0442\u0435\u0440\u0430\u043b, \u0438\u043b\u0438 \u043e\u0434\u043d\u0430 \u0444\u0443\u043d\u043a\u0446\u0438\u044f. \u0415\u0441\u0442\u044c \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u043f\u0438\u0441\u0430\u0442\u044c \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u043d\u0430 Python, \u0430 \u043f\u043e\u0442\u043e\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0438\u0445 \u043f\u0440\u0438 \u0441\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0438 \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u0439. \u042f\u0437\u044b\u043a \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u0439 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0432\u043e \u043c\u043d\u043e\u0433\u0438\u0445 \u0447\u0430\u0441\u0442\u044f\u0445 QGIS. \u0412 \u044f\u0437\u044b\u043a\u0435 \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u0439 \u0435\u0441\u0442\u044c \u043e\u0431\u0449\u0435\u043f\u0440\u0438\u043d\u044f\u0442\u044b\u0435 \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438, a \u0433\u043b\u0430\u0432\u043d\u043e\u0435 \u0435\u0441\u0442\u044c \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u043c\u0438 \u0434\u0430\u043d\u043d\u044b\u043c\u0438.<\/p>\n<p>  <\/p>\n<p>\u0427\u0442\u043e \u0432\u0430\u0436\u043d\u043e \u0441\u043a\u0430\u0437\u0430\u0442\u044c \u0438\u043c\u0435\u043d\u043d\u043e \u043f\u0440\u043e \u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440 \u0433\u0435\u043e\u043c\u0435\u0442\u0440\u0438\u0438: \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0439\u0442\u0435 \u0438\u0445 \u043a\u0430\u043a \u043c\u043e\u0436\u043d\u043e \u0431\u043e\u043b\u0435\u0435 \u0431\u044b\u0441\u0442\u0440\u044b\u043c\u0438. \u0417\u0430\u043c\u0435\u0434\u043b\u0435\u043d\u043d\u044b\u0435 \u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440\u044b-\u0441\u0442\u0438\u043b\u0438 \u0441\u043e\u0437\u0434\u0430\u0434\u0443\u0442 \u043c\u043e\u0433\u0443\u0442 \u043f\u0440\u0438\u0432\u0435\u0441\u0442\u0438 \u043a \u0442\u043e\u043c\u0443, \u0447\u0442\u043e \u0441\u0438\u0441\u0442\u0435\u043c\u043e\u0439 \u0431\u0443\u0434\u0435\u0442 \u043d\u0435\u043f\u0440\u0438\u044f\u0442\u043d\u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f.<\/p>\n<p>  <\/p>\n<p>\u041f\u043e\u0441\u043b\u0435 \u0442\u043e\u0433\u043e \u043a\u0430\u043a \u0441\u043e\u0437\u0434\u0430\u043d \u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440 \u0433\u0435\u043e\u043c\u0435\u0442\u0440\u0438\u0438, \u043a \u043e\u0431\u044a\u0435\u043a\u0442\u0443 \u0441\u043e\u0437\u0434\u0430\u043d\u043d\u043e\u0433\u043e \u0442\u0438\u043f\u0430, \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u0438\u043c\u0435\u043d\u0438\u0442\u044c \u0432\u0441\u044e \u043c\u043e\u0449\u044c \u0441\u0442\u0438\u043b\u0435\u0439 QGIS, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u0446\u0432\u0435\u0442, \u0442\u043e\u043b\u0449\u0438\u043d\u0443 \u043b\u0438\u043d\u0438\u0439, \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0448\u0442\u0440\u0438\u0445\u043e\u0432\u043a\u0443 \u0438 \u0442.\u00a0\u0434. \u0413\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440\u044b \u0433\u0435\u043e\u043c\u0435\u0442\u0440\u0438\u0438 \u043c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c \u0432\u043b\u043e\u0436\u0435\u043d\u043d\u044b\u043c\u0438.<\/p>\n<p>  <\/p>\n<h2 id=\"tochki-v-\">\u0422\u043e\u0447\u043a\u0438 \u0432 &#8230;<\/h2>\n<p>  <\/p>\n<p>\u041f\u0435\u0440\u0432\u044b\u0439 \u043f\u0440\u0438\u043c\u0435\u0440 \u0440\u0430\u0437\u0431\u0435\u0440\u0435\u043c \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e, \u0432 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0445 \u043f\u0440\u0438\u043c\u0435\u0440\u0430\u0445 \u0431\u0443\u0434\u0435\u043c \u043e\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0442\u044c\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0430 \u043d\u043e\u0432\u044b\u0445 \u043c\u043e\u043c\u0435\u043d\u0442\u0430\u0445.<\/p>\n<p>  <\/p>\n<p>\u041f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u0438\u043c, \u0447\u0442\u043e \u0432\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0435 \u043c\u0443\u043b\u044c\u0442\u0438\u0442\u043e\u0447\u043a\u0443 (\u0442\u043e\u0447\u0435\u0447\u043d\u044b\u0439 \u043e\u0431\u044a\u0435\u043a\u0442, \u0441\u043e\u0441\u0442\u043e\u044f\u0449\u0438\u0439 \u0438\u0437 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 \u0442\u043e\u0447\u0435\u043a), \u0435\u0441\u043b\u0438 \u0438\u0445 \u043c\u043d\u043e\u0433\u043e, \u0431\u044b\u0432\u0430\u0435\u0442 \u043e\u0447\u0435\u043d\u044c \u0442\u0440\u0443\u0434\u043d\u043e \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u044c \u043a\u0430\u043a\u0430\u044f \u0442\u043e\u0447\u043a\u0430 \u043a \u043a\u0430\u043a\u043e\u0439 \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0441\u044f, \u043d\u0430 \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0435 \u043d\u0438\u0436\u0435 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u044b \u0434\u0432\u0430 \u0440\u0430\u0437\u043d\u044b\u0445 \u0441\u0442\u0438\u043b\u044f \u0434\u043b\u044f \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u043f\u044f\u0442\u0438 \u043c\u0443\u043b\u044c\u0442\u0438\u0442\u043e\u0447\u0435\u043a, \u0441\u043b\u0435\u0432\u0430 \u043e\u0431\u044b\u0447\u043d\u044b\u0439, \u0441\u043f\u0440\u0430\u0432\u0430 \u0442\u043e\u0442, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u043e\u043f\u0440\u043e\u0431\u0443\u0435\u043c \u0441\u043e\u0437\u0434\u0430\u0442\u044c:<\/p>\n<p>  <\/p>\n<p><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/nt\/yi\/zg\/ntyizgzyexsp8syw3ep_a99zq58.png\" alt=\"\u041e\u0434\u0438\u043d \u043e\u0431\u044a\u0435\u043a\u0442 \u0441 \u0440\u0430\u0437\u043d\u044b\u043c\u0438 \u0441\u0442\u0438\u043b\u044f\u043c\u0438\"><\/p>\n<p>  <\/p>\n<p>\u041d\u0430\u043c \u043f\u043e\u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0442\u0440\u0438 \u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440\u0430 \u0433\u0435\u043e\u043c\u0435\u0442\u0440\u0438\u0438: \u043e\u0434\u0438\u043d, \u0441 \u0442\u043e\u0447\u0435\u0447\u043d\u044b\u043c \u0442\u0438\u043f\u043e\u043c, \u0434\u043b\u044f \u043f\u0435\u0440\u0432\u043e\u0439 \u0442\u043e\u0447\u043a\u0438; \u043e\u0434\u0438\u043d, \u0442\u0430\u043a\u0436\u0435 \u0442\u043e\u0447\u0435\u0447\u043d\u044b\u0439, \u0434\u043b\u044f \u0432\u0442\u043e\u0440\u043e\u0439 \u0438 \u043f\u043e\u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0445 \u0442\u043e\u0447\u0435\u043a \u0438 \u0435\u0449\u0435 \u043e\u0434\u0438\u043d \u2014 \u043b\u0438\u043d\u0435\u0439\u043d\u044b\u0439, \u0434\u043b\u044f \u0441\u0442\u0440\u0435\u043b\u043e\u043a. \u0412\u0441\u0435 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u044f\u0442\u0441\u044f \u0434\u043b\u044f \u0441\u043b\u043e\u044f <strong>points<\/strong>.<\/p>\n<p>  <\/p>\n<p>\u0414\u043b\u044f \u0432\u044b\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u043f\u0435\u0440\u0432\u043e\u0439 \u0442\u043e\u0447\u043a\u0438 \u0432\u043e\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u0441\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u0435\u0439 <code>geometry_n()<\/code>, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0447\u0430\u0441\u0442\u044c \u0438\u0441\u0445\u043e\u0434\u043d\u043e\u0439 \u0433\u0435\u043e\u043c\u0435\u0442\u0440\u0438\u0438 \u043f\u043e \u0435\u0435 \u0438\u043d\u0434\u0435\u043a\u0441\u0443:<\/p>\n<p>  <\/p>\n<pre><code class=\"lua\">geometry_n($geometry, 1)<\/code><\/pre>\n<p>  <\/p>\n<p>\u0417\u0434\u0435\u0441\u044c <code>$geometry<\/code> \u2014 \u044d\u0442\u043e \u043f\u0440\u0435\u0434\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u0430\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u044f, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u0438\u0441\u0445\u043e\u0434\u043d\u043e\u0439 \u0433\u0435\u043e\u043c\u0435\u0442\u0440\u0438\u0438 \u0442\u0435\u043a\u0443\u0449\u0435\u0433\u043e \u043e\u0431\u044a\u0435\u043a\u0442\u0430.<\/p>\n<p>  <\/p>\n<p>\u0414\u043b\u044f \u0432\u0442\u043e\u0440\u043e\u0439 \u0438 \u043f\u043e\u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0445 \u0442\u043e\u0447\u0435\u043a, \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440\u0430 \u0431\u0443\u0434\u0435\u0442 \u043d\u0435 \u0441\u043b\u0438\u0448\u043a\u043e\u043c \u0441\u043b\u043e\u0436\u043d\u0435\u0435:<\/p>\n<p>  <\/p>\n<pre><code class=\"lua\">if(     @geometry_part_num &gt; 1, -- \u0442\u043e\u043b\u044c\u043a\u043e \u0432\u0442\u043e\u0440\u0430\u044f \u0438 \u043f\u043e\u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u0447\u0430\u0441\u0442\u0438     geometry_n($geometry,  @geometry_part_num ), -- \u0432\u044b\u0431\u0438\u0440\u0430\u0435\u043c \u043d\u0443\u0436\u043d\u0443\u044e \u0447\u0430\u0441\u0442\u044c     NULL )<\/code><\/pre>\n<p>  <\/p>\n<p>\u041a\u0430\u043a \u0432\u0438\u0434\u043d\u043e \u0438\u0437 \u043a\u043e\u0434\u0430, <code>if()<\/code>\u2014 \u044d\u0442\u043e \u0444\u0443\u043d\u043a\u0446\u0438\u044f. \u0412 \u0441\u0442\u0440\u043e\u043a\u0435 2 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f <code>@geometry_part_num<\/code>, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043f\u0440\u0435\u0434\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u043e\u0439 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439, \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0449\u0435\u0439 \u043d\u043e\u043c\u0435\u0440 \u0442\u0435\u043a\u0443\u0449\u0435\u0439 \u0442\u043e\u0447\u043a\u0438 \u043e\u0431\u044a\u0435\u043a\u0442\u0430 (\u043e\u0431\u0440\u0430\u0449\u0435\u043d\u0438\u0435 \u043a \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u043c \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u0442\u0441\u044f \u0441\u043e \u0437\u043d\u0430\u043a\u0430 <code>@<\/code>). \u0412 \u044d\u0442\u043e\u043c \u0444\u0440\u0430\u0433\u043c\u0435\u043d\u0442\u0435 \u043c\u044b \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u043c <code>NULL<\/code> \u0435\u0441\u043b\u0438 \u044d\u0442\u043e \u043f\u0435\u0440\u0432\u0430\u044f \u0442\u043e\u0447\u043a\u0430 \u0438 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u043c \u0442\u0435\u043a\u0443\u0449\u0443\u044e \u0442\u043e\u0447\u043a\u0443 \u0434\u043b\u044f \u0432\u0442\u043e\u0440\u043e\u0439 \u0438 \u043f\u043e\u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0439. \u0421\u043f\u0440\u0430\u0432\u0435\u0434\u043b\u0438\u0432\u043e\u0441\u0442\u0438 \u0440\u0430\u0434\u0438 \u043d\u0430\u0434\u043e \u043e\u0442\u043c\u0435\u0442\u0438\u0442\u044c, \u0447\u0442\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0440\u0430\u0437\u043d\u044b\u043c\u0438 \u043f\u0435\u0440\u0432\u0443\u044e \u0438 \u0434\u0440\u0443\u0433\u0438\u0435 \u0442\u043e\u0447\u043a\u0438 \u043c\u043e\u0436\u043d\u043e \u0438\u043d\u0430\u0447\u0435, \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u043f\u043e\u043d\u0430\u0434\u043e\u0431\u0438\u0442\u0441\u044f, \u043d\u043e \u0431\u0435\u0437 \u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440\u0430 \u0433\u0435\u043e\u043c\u0435\u0442\u0440\u0438\u0438.<\/p>\n<p>  <\/p>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0438\u043c \u043a \u0441\u0442\u0440\u0435\u043b\u043a\u0430\u043c \u2014 \u043b\u0438\u043d\u0438\u044f\u043c, \u0441\u043e\u0437\u0434\u0430\u0434\u0438\u043c \u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440 \u0433\u0435\u043e\u043c\u0435\u0442\u0440\u0438\u0438 \u0438 \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u0435\u0433\u043e \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u0435:<\/p>\n<p>  <\/p>\n<pre><code class=\"lua\">if(     @geometry_part_num &gt; 1, -- \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u043c \u0442\u043e\u043b\u044c\u043a\u043e \u0434\u043b\u044f \u0432\u0442\u043e\u0440\u043e\u0439 \u0438 \u043f\u043e\u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0445 \u0442\u043e\u0447\u0435\u043a     with_variable(         'inputs',         array(             10000, -- \u0437\u0430\u0437\u043e\u0440 \u0434\u043e \u0446\u0435\u043d\u0442\u0440\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0443\u0437\u043b\u0430 \u0438 \u043c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u0430\u044f \u0434\u043b\u0438\u043d\u0430 \u0441\u0442\u0440\u0435\u043b\u043a\u0438             length( -- \u0440\u0430\u0441\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u043e\u0442 \u0442\u0435\u043a\u0443\u0449\u0435\u0439 \u0442\u043e\u0447\u043a\u0438 \u0434\u043e \u043f\u0435\u0440\u0432\u043e\u0439 \u0442\u043e\u0447\u043a\u0438                 make_line(                     start_point($geometry),                     geometry_n($geometry, @geometry_part_num)                 )             ),             azimuth( -- \u0430\u0437\u0438\u043c\u0443\u0442 \u043e\u0442 \u0442\u0435\u043a\u0443\u0449\u0435\u0439 \u0442\u043e\u0447\u043a\u0438 \u0434\u043e \u043f\u0435\u0440\u0432\u043e\u0439 \u0442\u043e\u0447\u043a\u0438                 geometry_n($geometry, @geometry_part_num),                 start_point($geometry)             )         ),         if(             @inputs[0] &lt; @inputs[1], -- \u043d\u0435 \u0440\u0438\u0441\u0443\u0435\u043c \u043a\u043e\u0440\u043e\u0442\u043a\u0438\u0435 \u043b\u0438\u043d\u0438\u0438             make_line(                 geometry_n($geometry, @geometry_part_num), -- \u0438\u0441\u0445\u043e\u0434\u043d\u0430\u044f \u0442\u043e\u0447\u043a\u0430                 project(                     geometry_n($geometry, @geometry_part_num), -- \u0442\u0435\u043a\u0443\u0449\u0430\u044f \u0442\u043e\u0447\u043a\u0430                     @inputs[1] - @inputs[0], -- \u0434\u043b\u0438\u043d\u0430 \u043b\u0438\u043d\u0438\u0438                     @inputs[2] -- \u0430\u0437\u0438\u043c\u0443\u0442                 )             ),             NULL -- \u0440\u0430\u0441\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u0434\u043e \u043f\u0435\u0440\u0432\u043e\u0439 \u0442\u043e\u0447\u043a\u0438 \u043c\u0435\u043d\u044c\u0448\u0435, \u0447\u0435\u043c \u0434\u043b\u0438\u043d\u0430 \u043b\u0438\u043d\u0438\u0438.         )     ),     NULL )<\/code><\/pre>\n<p>  <\/p>\n<p>\u0420\u0430\u0437\u0431\u0435\u0440\u0435\u043c \u044d\u0442\u043e\u0442 \u043a\u043e\u0434 \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u0435\u0435. \u041d\u0430\u0447\u0438\u043d\u0430\u0435\u043c \u0441 \u0443\u0441\u043b\u043e\u0432\u0438\u044f, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u0442\u0441\u044f \u043d\u043e\u043c\u0435\u0440 \u0442\u043e\u0447\u043a\u0438 \u0438, \u0435\u0441\u043b\u0438 \u044d\u0442\u043e \u043f\u0435\u0440\u0432\u0430\u044f \u0442\u043e\u0447\u043a\u0430, \u0442\u043e \u0441\u0442\u0440\u0435\u043b\u043a\u0443 \u0440\u0438\u0441\u043e\u0432\u0430\u0442\u044c \u043d\u0435 \u043d\u0430\u0434\u043e \u0438 \u0441\u0440\u0430\u0437\u0443 \u043f\u0435\u0440\u0435\u043f\u0440\u044b\u0433\u0438\u0432\u0430\u0435\u043c \u043d\u0430 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0439 <code>NULL<\/code>. <\/p>\n<p>  <\/p>\n<p>\u0414\u043b\u044f \u0432\u0442\u043e\u0440\u043e\u0439 \u0438 \u043f\u043e\u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0445 \u0442\u043e\u0447\u0435\u043a \u0440\u0438\u0441\u0443\u0435\u043c \u0441\u0442\u0440\u0435\u043b\u043a\u0443 \u2014 \u043f\u0440\u043e\u0441\u0442\u043e \u043b\u0438\u043d\u0438\u044e \u0441 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u044b\u043c \u0441\u0442\u0438\u043b\u0435\u043c. \u041d\u0430\u043c \u043f\u043e\u043d\u0430\u0434\u043e\u0431\u0438\u0442\u0441\u044f \u0440\u0430\u0441\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u043e\u0442 \u0442\u0435\u043a\u0443\u0449\u0435\u0439 \u0442\u043e\u0447\u043a\u0438 \u0434\u043e \u043f\u0435\u0440\u0432\u043e\u0439 \u0442\u043e\u0447\u043a\u0438, \u0430 \u0442\u0430\u043a\u0436\u0435 \u0430\u0437\u0438\u043c\u0443\u0442 \u0438\u0437 \u0442\u0435\u043a\u0443\u0449\u0435\u0439 \u0442\u043e\u0447\u043a\u0438 \u0434\u043e \u043f\u0435\u0440\u0432\u043e\u0439. \u0415\u0449\u0435 \u043c\u044b \u043d\u0435 \u0445\u043e\u0442\u0438\u043c \u0440\u0438\u0441\u043e\u0432\u0430\u0442\u044c \u043e\u0447\u0435\u043d\u044c \u043a\u043e\u0440\u043e\u0442\u043a\u0438\u0435 \u0441\u0442\u0440\u0435\u043b\u043a\u0438 \u0438, \u0447\u0442\u043e\u0431\u044b \u0431\u044b\u043b \u0437\u0430\u0437\u043e\u0440 \u043c\u0435\u0436\u0434\u0443 \u043f\u0435\u0440\u0432\u043e\u0439 \u0442\u043e\u0447\u043a\u043e\u0439 \u0438 \u0441\u0442\u0440\u0435\u043b\u043a\u043e\u0439. \u0411\u0443\u0434\u0435\u0442 \u0445\u043e\u0440\u043e\u0448\u043e, \u0435\u0441\u043b\u0438 \u044d\u0442\u0438 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u043c\u044b \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u043c \u0437\u0430\u0440\u0430\u043d\u0435\u0435 \u0438 \u0431\u0443\u0434\u0435\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0438\u0445 \u0434\u0430\u043b\u044c\u0448\u0435 \u0432 \u043a\u043e\u0434\u0435.<\/p>\n<p>  <\/p>\n<p>\u0414\u043b\u044f \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u044f <code>with_variable()<\/code>, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043c\u043e\u0436\u0435\u0442 \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u0442\u0440\u0438 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u0430: \u0438\u043c\u044f \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439, \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439, \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u0435. \u041d\u043e \u0443 \u043d\u0430\u0441 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445, \u0437\u043d\u0430\u0447\u0438\u0442 \u043d\u0430\u0434\u043e \u043a\u0430\u043a-\u0442\u043e \u0443\u043c\u0435\u0441\u0442\u0438\u0442\u044c \u0438\u0445 \u0432 \u043e\u0434\u043d\u0443, \u043f\u0440\u0438\u0434\u0435\u0442\u0441\u044f \u0438\u043b\u0438 \u043f\u0438\u0441\u0430\u0442\u044c \u0432\u043b\u043e\u0436\u0435\u043d\u043d\u044b\u0435 <code>with_variable<\/code>, \u0438\u043b\u0438 \u0438\u0441\u043a\u0430\u0442\u044c \u0434\u0440\u0443\u0433\u043e\u0439 \u043f\u0443\u0442\u044c. \u041f\u043e\u043f\u0440\u043e\u0431\u0443\u0435\u043c \u043e\u0431\u043e\u0439\u0442\u0438\u0441\u044c \u0431\u0435\u0437 \u0432\u043b\u043e\u0436\u0435\u043d\u043d\u044b\u0445 \u043e\u0431\u044a\u044f\u0432\u043b\u0435\u043d\u0438\u0439.<\/p>\n<p>  <\/p>\n<p>\u0427\u0442\u043e\u0431\u044b \u0443\u043c\u0435\u0441\u0442\u0438\u0442\u044c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 \u0432 \u043e\u0434\u043d\u0443 \u2014 \u0441\u043e\u0437\u0434\u0430\u0434\u0438\u043c \u0441\u043f\u0438\u0441\u043e\u043a \u0441 \u0438\u043c\u0435\u043d\u0435\u043c <code>inputs<\/code> \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0444\u0443\u043d\u043a\u0446\u0438\u0438 <code>array()<\/code> \u2014 \u0438\u043d\u0434\u0435\u043a\u0441\u044b \u043d\u0430\u0447\u0438\u043d\u0430\u044e\u0442\u0441\u044f \u0441 0. \u041f\u0435\u0440\u0432\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0441\u043f\u0438\u0441\u043a\u0430 \u2014 \u044d\u0442\u043e \u043c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u0430\u044f \u0434\u043b\u0438\u043d\u0430 \u0441\u0442\u0440\u0435\u043b\u043a\u0438, \u0430 \u0442\u0430\u043a\u0436\u0435 \u0437\u0430\u0437\u043e\u0440 \u0434\u043e \u043f\u0435\u0440\u0432\u043e\u0433\u043e \u0443\u0437\u043b\u0430. \u0412\u0442\u043e\u0440\u043e\u0435 \u0438 \u0442\u0440\u0435\u0442\u044c\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u2014 \u0440\u0430\u0441\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u043c\u0435\u0436\u0434\u0443 \u0442\u0435\u043a\u0443\u0449\u0435\u0439 \u0442\u043e\u0447\u043a\u043e\u0439 \u0438 \u043f\u0435\u0440\u0432\u043e\u0439 \u0442\u043e\u0447\u043a\u043e\u0439, \u0430 \u0442\u0430\u043a\u0436\u0435 \u0430\u0437\u0438\u043c\u0443\u0442 \u0438\u0437 \u0442\u0435\u043a\u0443\u0449\u0435\u0439 \u0442\u043e\u0447\u043a\u0438 \u0432 \u043f\u0435\u0440\u0432\u0443\u044e:<\/p>\n<p>  <\/p>\n<pre><code class=\"lua\">... length( -- \u0440\u0430\u0441\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u043e\u0442 \u0442\u0435\u043a\u0443\u0449\u0435\u0439 \u0442\u043e\u0447\u043a\u0438 \u0434\u043e \u043f\u0435\u0440\u0432\u043e\u0439 \u0442\u043e\u0447\u043a\u0438     make_line(         start_point($geometry),         geometry_n($geometry, @geometry_part_num)     ) ), azimuth( -- \u0430\u0437\u0438\u043c\u0443\u0442 \u043e\u0442 \u0442\u0435\u043a\u0443\u0449\u0435\u0439 \u0442\u043e\u0447\u043a\u0438 \u0434\u043e \u043f\u0435\u0440\u0432\u043e\u0439 \u0442\u043e\u0447\u043a\u0438     geometry_n($geometry, @geometry_part_num),     start_point($geometry) ) ...<\/code><\/pre>\n<p>  <\/p>\n<p>\u0414\u043b\u044f \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u0440\u0430\u0441\u0441\u0442\u043e\u044f\u043d\u0438\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c \u0444\u0443\u043d\u043a\u0446\u0438\u044e <code>length()<\/code>, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u0442 \u043b\u0438\u043d\u0438\u044e, \u0430 \u0444\u0443\u043d\u043a\u0446\u0438\u0435\u0439 <code>make_line()<\/code> \u0438 \u0441\u043e\u0437\u0434\u0430\u0435\u0442\u0441\u044f \u043b\u0438\u043d\u0438\u044f \u0438\u0437 \u043f\u0435\u0440\u0432\u043e\u0439 \u0442\u043e\u0447\u043a\u0438 \u2014 <code>start_point($geometry)<\/code>, \u0434\u043e \u0442\u0435\u043a\u0443\u0449\u0435\u0439 (\u0437\u0434\u0435\u0441\u044c \u043f\u043e\u0440\u044f\u0434\u043e\u043a \u0442\u043e\u0447\u0435\u043a \u043d\u0435 \u0432\u0430\u0436\u0435\u043d). \u0424\u0443\u043d\u043a\u0446\u0438\u044f <code>azimuth()<\/code> \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u0442 \u0434\u0432\u0435 \u0442\u043e\u0447\u043a\u0438 \u0438 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0443\u0433\u043e\u043b \u0432 \u0440\u0430\u0434\u0438\u0430\u043d\u0430\u0445, \u0437\u0434\u0435\u0441\u044c \u043f\u043e\u0440\u044f\u0434\u043e\u043a \u0442\u043e\u0447\u0435\u043a \u0432\u0430\u0436\u0435\u043d!<\/p>\n<p>  <\/p>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u0432\u0441\u0435 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u0433\u043e\u0442\u043e\u0432\u044b, \u043f\u0440\u0438\u0441\u0442\u0443\u043f\u0438\u043c \u043a \u043b\u0438\u043d\u0438\u044f\u043c. \u0421 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0432\u0442\u043e\u0440\u043e\u0433\u043e <code>if()<\/code> \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c \u0443\u0441\u043b\u043e\u0432\u0438\u0435, \u0447\u0442\u043e\u0431\u044b \u0440\u0430\u0441\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u043c\u0435\u0436\u0434\u0443 \u0442\u0435\u043a\u0443\u0449\u0435\u0439 \u0442\u043e\u0447\u043a\u043e\u0439 \u0438 \u043f\u0435\u0440\u0432\u043e\u0439 \u0442\u043e\u0447\u043a\u043e\u0439 \u0431\u044b\u043b\u043e \u0431\u043e\u043b\u044c\u0448\u0435, \u0447\u0435\u043c \u043c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u0439 \u0440\u0430\u0437\u043c\u0435\u0440 \u043b\u0438\u043d\u0438\u0438. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043e\u0431\u0440\u0430\u0449\u0430\u0435\u043c\u0441\u044f \u043a \u043c\u0430\u0441\u0441\u0438\u0432\u0443 <code>@inputs<\/code> \u0438 \u0435\u0441\u043b\u0438 \u0440\u0430\u0441\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u043c\u0435\u043d\u044c\u0448\u0435, \u0447\u0435\u043c \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f, \u0442\u043e \u00ab\u043f\u0435\u0440\u0435\u043f\u0440\u044b\u0433\u0438\u0432\u0430\u0435\u043c\u00bb \u043d\u0430 \u043f\u0440\u0435\u0434\u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0439 <code>NULL<\/code>.<\/p>\n<p>  <\/p>\n<p>\u041d\u0435\u043f\u043e\u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u043b\u0438\u043d\u0438\u0438 \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0442\u0430\u043a:<\/p>\n<p>  <\/p>\n<pre><code class=\"lua\">... make_line(     geometry_n($geometry, @geometry_part_num), -- \u0442\u043e\u0447\u043a\u0430 \u0438\u0437 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0440\u0438\u0441\u0443\u0435\u043c \u043b\u0438\u043d\u0438\u044e     project(         geometry_n($geometry, @geometry_part_num), -- \u0442\u0435\u043a\u0443\u0449\u0430\u044f \u0442\u043e\u0447\u043a\u0430         @inputs[1] - @inputs[0], -- \u0434\u043b\u0438\u043d\u0430 \u043b\u0438\u043d\u0438\u0438         @inputs[2] -- \u0430\u0437\u0438\u043c\u0443\u0442     ) ) ...<\/code><\/pre>\n<p>  <\/p>\n<p>\u041d\u043e\u0432\u0430\u044f \u0437\u0434\u0435\u0441\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u0444\u0443\u043d\u043a\u0446\u0438\u044f <code>project()<\/code>, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0442\u043e\u0447\u043a\u0443, \u043e\u0442\u0434\u0430\u043b\u0435\u043d\u043d\u0443\u044e \u043e\u0442 \u0438\u0441\u0445\u043e\u0434\u043d\u043e\u0439 \u043d\u0430 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u043e\u0435 \u0440\u0430\u0441\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u043f\u043e \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u043e\u043c\u0443 \u0430\u0437\u0438\u043c\u0443\u0442\u0443. \u041a \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u044b\u043c \u043b\u0438\u043d\u0438\u044f\u043c \u043d\u0430\u0434\u043e \u043f\u0440\u0438\u043c\u0435\u043d\u0438\u0442\u044c \u0441\u0442\u0438\u043b\u044c, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0441\u0434\u0435\u043b\u0430\u0435\u0442 \u0438\u0437 \u043b\u0438\u043d\u0438\u0438 \u0441\u0442\u0440\u0435\u043b\u043a\u0443.<\/p>\n<p>  <\/p>\n<h2 id=\"dopolnyaem-horoshee\">\u0414\u043e\u043f\u043e\u043b\u043d\u044f\u0435\u043c \u0445\u043e\u0440\u043e\u0448\u0435\u0435<\/h2>\n<p>  <\/p>\n<p>\u0412 \u043a\u043e\u043d\u0446\u0435 \u0441\u0442\u0430\u0442\u044c\u0438 \u0435\u0441\u0442\u044c \u0441\u0441\u044b\u043b\u043a\u0438 \u043d\u0430 \u0440\u0435\u0441\u0443\u0440\u0441\u044b \u043f\u043e \u0442\u0435\u043c\u0435 \u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440\u043e\u0432 \u0433\u0435\u043e\u043c\u0435\u0442\u0440\u0438\u0438, \u0441\u0440\u0435\u0434\u0438 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0435\u0441\u0442\u044c \u043f\u0440\u0435\u043a\u0440\u0430\u0441\u043d\u044b\u0439 \u043a\u0430\u043d\u0430\u043b Klas Karlsson, \u043f\u043e\u0441\u0432\u044f\u0449\u0435\u043d\u043d\u044b\u0439 QGIS. \u0412 \u043e\u0434\u043d\u043e\u043c \u0438\u0437 \u0443\u0440\u043e\u043a\u043e\u0432 \u041a\u043b\u0430\u0441, \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440\u0430 \u0433\u0435\u043e\u043c\u0435\u0442\u0440\u0438\u0438, \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u043b \u043b\u0438\u043d\u0438\u044e, \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0443\u044e \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u0443 \u0434\u043b\u044f \u043a\u0430\u0440\u0442 \u043f\u043e \u0441\u043f\u043e\u0440\u0442\u0438\u0432\u043d\u043e\u043c\u0443 \u043e\u0440\u0438\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044e, \u043f\u0440\u0438\u043c\u0435\u0440\u043d\u043e \u0442\u0430\u043a\u0443\u044e:<\/p>\n<p>  <\/p>\n<p><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/dh\/qm\/fp\/dhqmfp-7oy2buplka-yktz80wto.png\" alt=\"\u041c\u0430\u0440\u0448\u0440\u0443\u0442\"><\/p>\n<p>  <\/p>\n<p>\u041c\u043d\u0435 \u043d\u0435 \u043e\u0447\u0435\u043d\u044c \u043f\u043e\u043d\u0440\u0430\u0432\u0438\u043b\u0441\u044f \u043c\u0435\u0442\u043e\u0434, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u0440\u0438\u043c\u0435\u043d\u0438\u043b \u041a\u043b\u0430\u0441. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u041a\u043b\u0430\u0441 \u0441\u043e\u0437\u0434\u0430\u0435\u0442 \u0441\u0440\u043e\u043a\u0443 \u0432 \u0444\u043e\u0440\u043c\u0430\u0442\u0435 WKT \u0434\u043b\u044f \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u044f \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0439 \u0433\u0435\u043e\u043c\u0435\u0442\u0440\u0438\u0438, \u0441 \u043f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u043e\u0439 \u043a\u043e\u043d\u043a\u0430\u0442\u0435\u043d\u0430\u0446\u0438\u0435\u0439 \u0434\u0440\u0443\u0433\u0438\u0445 \u0441\u0442\u0440\u043e\u043a, \u0432 \u043a\u043e\u0434\u0435 \u043c\u043d\u043e\u0433\u043e \u043b\u0438\u0448\u043d\u0438\u0445 \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432 \u00ab||\u00bb, \u0432\u0441\u0435 \u044d\u0442\u043e \u0437\u0430\u0442\u0440\u0443\u0434\u043d\u044f\u0435\u0442 \u0447\u0442\u0435\u043d\u0438\u0435 \u0438 \u043f\u043e\u043d\u0438\u043c\u0430\u043d\u0438\u0435. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u044e \u0438\u043d\u043e\u0439 \u0441\u043f\u043e\u0441\u043e\u0431 \u043a\u043e\u0442\u043e\u0440\u044b\u0439, \u043d\u0430 \u043c\u043e\u0439 \u0432\u0437\u0433\u043b\u044f\u0434, \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0431\u043e\u043b\u0435\u0435 \u0447\u0438\u0442\u0430\u0435\u043c\u044b\u043c \u0438 \u043f\u043e\u043d\u044f\u0442\u043d\u044b\u043c. \u0420\u0430\u0437\u043d\u0438\u0446\u0430 \u043c\u0435\u0436\u0434\u0443 \u043c\u0435\u0442\u043e\u0434\u0430\u043c\u0438 \u0432:<\/p>\n<p>  <\/p>\n<ul>\n<li>\u043d\u0430\u0447\u0430\u043b\u043e \u0438 \u043a\u043e\u043d\u0435\u0446 \u043b\u0438\u043d\u0438\u0438 \u043e\u0431\u043e\u0437\u043d\u0430\u0447\u0435\u043d\u044b \u043e\u0434\u0438\u043d\u0430\u043a\u043e\u0432\u043e, \u0447\u0438\u0442\u0430\u0442\u0435\u043b\u044c \u043c\u043e\u0436\u0435\u0442 \u043b\u0435\u0433\u043a\u043e \u044d\u0442\u043e \u043f\u0435\u0440\u0435\u0434\u0435\u043b\u0430\u0442\u044c \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0434\u043e\u043c\u0430\u0448\u043d\u0435\u0433\u043e \u0437\u0430\u0434\u0430\u043d\u0438\u044f;<\/li>\n<li>\u043b\u0438\u043d\u0438\u044f \u043d\u0435 \u0431\u0443\u0434\u0435\u0442 \u0440\u0438\u0441\u043e\u0432\u0430\u0442\u044c\u0441\u044f, \u0435\u0441\u043b\u0438 \u0440\u0430\u0441\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u043c\u0435\u0436\u0434\u0443 \u0442\u043e\u0447\u043a\u0430\u043c\u0438 \u043c\u0435\u043d\u044c\u0448\u0435 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u043e\u0433\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f.<\/li>\n<\/ul>\n<p>  <\/p>\n<p>\u041f\u0440\u0438\u0441\u0442\u0443\u043f\u0438\u043c (\u0441\u043b\u043e\u0439 <strong>lines1<\/strong>). \u041f\u043e \u043b\u0438\u043d\u0438\u0438 \u0432\u0438\u0434\u043d\u043e, \u0447\u0442\u043e \u043d\u0430\u043c \u043f\u043e\u043d\u0430\u0434\u043e\u0431\u0438\u0442\u0441\u044f \u0434\u0432\u0430 \u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440\u0430 \u0433\u0435\u043e\u043c\u0435\u0442\u0440\u0438\u0438:<\/p>\n<p>  <\/p>\n<ul>\n<li>\u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440 \u0442\u043e\u0447\u0435\u043a \u0434\u043b\u044f \u043e\u0431\u043e\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0443\u0437\u043b\u043e\u0432 (\u0431\u0435\u0437 \u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440\u0430 \u043d\u0435 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u0441\u044f \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0440\u0430\u0437\u043d\u044b\u0435 \u0437\u043d\u0430\u043a\u0438 \u043d\u0430 \u043f\u0435\u0440\u0432\u043e\u043c \u0438 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u043c \u0443\u0437\u043b\u0435).<\/li>\n<li>\u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440 \u043b\u0438\u043d\u0438\u0439.<\/li>\n<\/ul>\n<p>  <\/p>\n<p>\u0413\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440 \u0442\u043e\u0447\u0435\u043a \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043f\u0440\u0438\u043c\u0438\u0442\u0438\u0432\u043d\u044b\u0439:<\/p>\n<p>  <\/p>\n<pre><code class=\"lua\">collect_geometries(     array_foreach(         generate_series(1, num_points($geometry)),         point_n($geometry, @element)     ) )<\/code><\/pre>\n<p>  <\/p>\n<p>\u041d\u0430\u0447\u043d\u0435\u043c \u00ab\u0440\u0430\u0441\u043a\u0440\u0443\u0447\u0438\u0432\u0430\u0442\u044c\u00bb \u0438\u0437\u043d\u0443\u0442\u0440\u0438. \u041d\u0430\u043c \u043d\u0430\u0434\u043e \u0441\u043e\u0431\u0440\u0430\u0442\u044c \u0432\u0441\u0435 \u0443\u0437\u043b\u044b \u0438\u0437 \u0438\u0441\u0445\u043e\u0434\u043d\u043e\u0439 \u0433\u0435\u043e\u043c\u0435\u0442\u0440\u0438\u0438. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0444\u0443\u043d\u043a\u0446\u0438\u0438 <code>generate_series()<\/code>, \u0441\u043e\u0437\u0434\u0430\u0435\u0442\u0441\u044f \u0441\u0435\u0440\u0438\u044f (\u0441\u043f\u0438\u0441\u043e\u043a) \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439 \u043e\u0442 1 \u0434\u043e <code>num_points($geometry)<\/code>, \u0442.\u00a0\u0435. \u0434\u043e \u043e\u0431\u0449\u0435\u0433\u043e \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u0430 \u0442\u043e\u0447\u0435\u043a \u0432 \u043b\u0438\u043d\u0438\u0438. \u041c\u044b \u0438\u0442\u0435\u0440\u0438\u0440\u0443\u0435\u043c \u043f\u043e \u044d\u0442\u043e\u043c\u0443 \u0441\u043f\u0438\u0441\u043a\u0443 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0444\u0443\u043d\u043a\u0446\u0438\u0438 <code>array_foreach()<\/code>. \u0424\u0443\u043d\u043a\u0446\u0438\u044f <code>array_foreach<\/code> \u0432\u0435\u0440\u043d\u0435\u0442 \u0441\u043f\u0438\u0441\u043e\u043a, \u0441\u043e\u0441\u0442\u043e\u044f\u0449\u0438\u0439 \u0438\u0437 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u043e\u0432 \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u044f <code>point_n($geometry, @element)<\/code>, \u0442.\u00a0\u0435. \u0438\u0437 \u0432\u0441\u0435\u0445 \u0442\u043e\u0447\u0435\u043a \u043b\u0438\u043d\u0438\u0438 (<code>point_n()<\/code> \u2014 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0442\u043e\u0447\u043a\u0443 \u0433\u0435\u043e\u043c\u0435\u0442\u0440\u0438\u0438 \u043f\u043e \u0435\u0435 \u0438\u043d\u0434\u0435\u043a\u0441\u0443), <code>@element<\/code> \u2014 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0439 \u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u043a \u0442\u0435\u043a\u0443\u0449\u0435\u043c\u0443 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044e \u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440\u0430 \u0441\u043f\u0438\u0441\u043a\u0430. \u041f\u043e\u043b\u0443\u0447\u0438\u0432\u0448\u0438\u0439\u0441\u044f \u0441\u043f\u0438\u0441\u043e\u043a \u043d\u0435 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0433\u0435\u043e\u043c\u0435\u0442\u0440\u0438\u0435\u0439, \u0430 \u0437\u043d\u0430\u0447\u0438\u0442 \u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440 \u0433\u0435\u043e\u043c\u0435\u0442\u0440\u0438\u0438 \u043d\u0435 \u0441\u043c\u043e\u0436\u0435\u0442 \u0435\u0433\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c. \u0427\u0442\u043e\u0431\u044b \u0442\u043e\u0447\u043a\u0438 \u0438\u0437 \u0441\u043f\u0438\u0441\u043a\u0430 \u043e\u0431\u044a\u0435\u0434\u0438\u043d\u0438\u0442\u044c \u0432 \u043e\u0434\u043d\u0443 \u0433\u0435\u043e\u043c\u0435\u0442\u0440\u0438\u044e \u2014 \u043c\u0443\u043b\u044c\u0442\u0438\u0442\u043e\u0447\u043a\u0443, \u0432\u043e\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u0441\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u0435\u0439 <code>collect_geometries()<\/code>. \u041f\u043e\u0441\u043b\u0435 \u044d\u0442\u043e\u0433\u043e \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u0435\u043c \u043a \u0442\u043e\u0447\u043a\u0430\u043c \u0441\u0442\u0438\u043b\u044c (\u0446\u0432\u0435\u0442 \u0438 \u0440\u0430\u0437\u043c\u0435\u0440).<\/p>\n<p>  <\/p>\n<p>\u041f\u0435\u0440\u0435\u0445\u043e\u0434\u0438\u043c \u043a \u043b\u0438\u043d\u0438\u044f\u043c. \u0414\u043b\u044f \u043b\u0438\u043d\u0438\u0439 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0439 \u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440 \u0433\u0435\u043e\u043c\u0435\u0442\u0440\u0438\u0438 \u0441 \u0442\u0438\u043f\u043e\u043c \u00ab\u043b\u0438\u043d\u0438\u044f\/\u043c\u0443\u043b\u044c\u0442\u0438\u043b\u0438\u043d\u0438\u044f\u00bb. \u0412\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u0434\u043b\u044f \u043d\u0435\u0433\u043e \u0442\u0430\u043a\u043e\u0435:<\/p>\n<p>  <\/p>\n<pre><code class=\"lua\">with_variable(     'minimal_length',  -- \u0434\u043b\u0438\u043d\u0430 \u0437\u0430\u0437\u043e\u0440\u0430, \u0430 \u0442\u0430\u043a\u0436\u0435 \u043c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u0430\u044f \u0434\u043b\u0438\u043d\u0430 \u043b\u0438\u043d\u0438\u0438     7000.0,     collect_geometries(  -- \u0441\u043e\u0431\u0438\u0440\u0430\u0435\u043c \u0433\u0435\u043e\u043c\u0435\u0442\u0440\u0438\u0438         array_foreach(             generate_series(1, num_points($geometry) - 1),  -- \u0432\u0441\u0435 \u043a\u0440\u043e\u043c\u0435 \u043a\u0440\u0430\u0439\u043d\u0435\u0439             with_variable(                 'inputs',                 array(                     azimuth( -- \u0430\u0437\u0438\u043c\u0443\u0442 \u043c\u0435\u0436\u0434\u0443 \u0442\u0435\u043a\u0443\u0449\u0435\u0439 \u0438 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0439 \u0442\u043e\u0447\u043a\u043e\u0439                         point_n($geometry, @element),                         point_n($geometry, @element + 1)                     ),                     length( -- \u0440\u0430\u0441\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u043c\u0435\u0436\u0434\u0443 \u0442\u0435\u043a\u0443\u0449\u0435\u0439 \u0438 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0439 \u0442\u043e\u0447\u043a\u043e\u0439                         make_line(                             point_n($geometry, @element),                             point_n($geometry, @element + 1)                         )                     )                 ),                 if(                     @inputs[1] - @minimal_length * 2 &gt; 0,  -- \u043c\u0438\u043d. \u0434\u043b\u0438\u043d\u0430 \u043b\u0438\u043d\u0438\u0438                     line_substring( -- \u0432\u044b\u0434\u0435\u043b\u044f\u0435\u043c \u0443\u043a\u043e\u0440\u043e\u0447\u0435\u043d\u043d\u0443\u044e \u043b\u0438\u043d\u0438\u044e \u0438\u0437 \u043b\u0438\u043d\u0438\u0438                         make_line(                             point_n($geometry, @element),                             point_n($geometry, @element+1)                         ),                         @minimal_length, @inputs[1] - @minimal_length                     ),                     geom_from_wkt('LINESTRING EMPTY') -- \u043f\u0443\u0441\u0442\u0430\u044f \u0433\u0435\u043e\u043c\u0435\u0442\u0440\u0438\u044f                 )             )         )     ) )<\/code><\/pre>\n<p>  <\/p>\n<p>\u0412 \u0446\u0435\u043b\u043e\u043c \u044d\u0442\u043e \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u043f\u043e\u0445\u043e\u0436\u0435 \u043d\u0430 \u0442\u043e, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u043c\u044b \u0434\u0435\u043b\u0430\u043b\u0438 \u0440\u0430\u043d\u044c\u0448\u0435. \u041d\u0430\u043c \u043e\u043f\u044f\u0442\u044c \u043f\u043e\u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f \u0434\u043b\u044f \u0437\u0430\u0434\u0430\u043d\u0438\u044f \u043c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0439 \u0434\u043b\u0438\u043d\u044b \u043b\u0438\u043d\u0438\u0438 \u0438 \u0437\u0430\u0437\u043e\u0440\u0430 \u043c\u0435\u0436\u0434\u0443 \u043b\u0438\u043d\u0438\u0435\u0439 \u0438 \u0443\u0437\u043b\u043e\u043c <code>@minimal_length<\/code>. \u0414\u0430\u043b\u044c\u0448\u0435 \u043c\u044b \u0441\u043e\u0431\u0438\u0440\u0430\u0435\u043c \u0433\u0435\u043e\u043c\u0435\u0442\u0440\u0438\u0438 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e <code>collect_geometries<\/code> \u0438\u0437 \u0441\u043f\u0438\u0441\u043a\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u0441\u044f \u0438\u0437 \u0446\u0438\u043a\u043b\u0430 <code>array_foreach<\/code> \u043f\u043e \u043d\u043e\u043c\u0435\u0440\u0430\u043c \u0432\u0441\u0435\u0445 \u0442\u043e\u0447\u0435\u043a \u043b\u0438\u043d\u0438\u0438, \u043a\u0440\u043e\u043c\u0435 \u043a\u0440\u0430\u0439\u043d\u0435\u0439. \u0412\u043d\u0443\u0442\u0440\u0438 \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0446\u0438\u043a\u043b\u0430, \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0439 \u0438\u0437 \u0438\u0442\u0435\u0440\u0430\u0446\u0438\u0439, \u043d\u0430\u043c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b \u0434\u0432\u0435 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u0432 \u0441\u043f\u0438\u0441\u043a\u0435 <code>@inputs<\/code>: \u0440\u0430\u0441\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u043c\u0435\u0436\u0434\u0443 \u0442\u043e\u0447\u043a\u0430\u043c\u0438 \u0438 \u0430\u0437\u0438\u043c\u0443\u0442 \u0438\u0437 \u0442\u0435\u043a\u0443\u0449\u0435\u0439 \u0442\u043e\u0447\u043a\u0438 \u0434\u043e \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0439.<\/p>\n<p>  <\/p>\n<p>\u041e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0432 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u0441\u0442\u0440\u043e\u0438\u043c \u043b\u0438\u043d\u0438\u0438. \u041b\u0438\u043d\u0438\u0438 \u0441\u0442\u0440\u043e\u0438\u043c \u0434\u043b\u044f \u0442\u0435\u0445 \u0442\u043e\u0447\u0435\u043a, \u0440\u0430\u0441\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u043c\u0435\u0436\u0434\u0443 \u043a\u043e\u0442\u043e\u0440\u044b\u043c\u0438 \u0431\u043e\u043b\u044c\u0448\u0435 \u0443\u0434\u0432\u043e\u0435\u043d\u043d\u043e\u0439 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 <code>@minimal_length<\/code> (\u0437\u0430\u0437\u043e\u0440\u044b \u0441 \u0434\u0432\u0443\u0445 \u0441\u0442\u043e\u0440\u043e\u043d). \u0415\u0441\u043b\u0438 \u043b\u0438\u043d\u0438\u044e \u0441\u0442\u0440\u043e\u0438\u0442\u044c \u043d\u0435 \u043d\u0430\u0434\u043e, \u0442\u043e \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0438\u043c \u043a \u0441\u0442\u0440\u043e\u043a\u0435, \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u044f \u0445\u043e\u0447\u0443 <strong>\u043e\u0431\u0440\u0430\u0442\u0438\u0442\u044c \u043e\u0441\u043e\u0431\u043e\u0435 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435<\/strong>:<\/p>\n<p>  <\/p>\n<pre><code class=\"lua\">geom_from_wkt('LINESTRING EMPTY')<\/code><\/pre>\n<p>  <\/p>\n<p>\u0417\u0434\u0435\u0441\u044c, \u043f\u043e \u0441\u0443\u0442\u0438 \u043d\u0430\u043c \u043d\u0435 \u043d\u0443\u0436\u043d\u0430 \u043d\u0438\u043a\u0430\u043a\u0430\u044f \u0433\u0435\u043e\u043c\u0435\u0442\u0440\u0438\u044f, \u043d\u043e \u0435\u0441\u043b\u0438 \u0432\u043c\u0435\u0441\u0442\u043e \u044d\u0442\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0438 \u043f\u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c <code>NULL<\/code>, \u0442\u043e \u0438\u0442\u043e\u0433\u043e\u0432\u0430\u044f \u0433\u0435\u043e\u043c\u0435\u0442\u0440\u0438\u044f \u0431\u0443\u0434\u0435\u0442 \u043d\u0435\u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u043e\u0439. \u0417\u043d\u0430\u0447\u0438\u0442 \u043d\u0430\u043c \u043d\u0430\u0434\u043e \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u044c \u043f\u0443\u0441\u0442\u0443\u044e \u043b\u0438\u043d\u0438\u044e, \u0447\u0442\u043e\u0431\u044b \u0432\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0435\u0435 \u0432 \u0441\u043f\u0438\u0441\u043e\u043a. \u041f\u0443\u0441\u0442\u0443\u044e \u043b\u0438\u043d\u0438\u044e \u043c\u043e\u0436\u043d\u043e \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u044c \u0432 \u0444\u043e\u0440\u043c\u0430\u0442\u0435 WKT \u043a\u0430\u043a \u00abLINESTRING EMPTY\u00bb, \u0430 \u0437\u0430\u0442\u0435\u043c \u043f\u0435\u0440\u0435\u0432\u0435\u0441\u0442\u0438 WKT \u0432 \u0442\u0438\u043f \u0433\u0435\u043e\u043c\u0435\u0442\u0440\u0438\u0438 QGIS \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0444\u0443\u043d\u043a\u0446\u0438\u0438 <code>geom_from_wkt()<\/code>.<\/p>\n<p>  <\/p>\n<p>\u0412\u0435\u0440\u043d\u0435\u043c\u0441\u044f \u043a \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044e \u043b\u0438\u043d\u0438\u0438. \u0412 \u043d\u0430\u0448\u0435\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u044d\u0442\u043e \u043b\u0435\u0433\u0447\u0435 \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0444\u0443\u043d\u043a\u0446\u0438\u0438 <code>line_subtring()<\/code>, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0443\u043a\u043e\u0440\u043e\u0447\u0435\u043d\u043d\u0443\u044e \u043b\u0438\u043d\u0438\u044e \u0438\u0437 \u0434\u0440\u0443\u0433\u043e\u0439 \u043b\u0438\u043d\u0438\u0438. \u041d\u0430 \u0432\u0445\u043e\u0434 \u044d\u0442\u043e\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u043f\u043e\u0434\u0430\u0435\u043c \u0438\u0441\u0445\u043e\u0434\u043d\u0443\u044e \u043b\u0438\u043d\u0438\u044e \u043c\u0435\u0436\u0434\u0443 \u0442\u043e\u0447\u043a\u0430\u043c\u0438, \u0430 \u0442\u0430\u043a\u0436\u0435 \u0440\u0430\u0441\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u043e\u0442 \u043d\u0430\u0447\u0430\u043b\u0430 \u0438\u0441\u0445\u043e\u0434\u043d\u043e\u0439 \u043b\u0438\u043d\u0438\u0438 \u0434\u043e \u043d\u0430\u0447\u0430\u043b\u0430 \u0432\u044b\u0440\u0435\u0437\u0430\u0435\u043c\u043e\u0433\u043e \u0443\u0447\u0430\u0441\u0442\u043a\u0430 \u0438 \u0440\u0430\u0441\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u043e\u0442 \u043d\u0430\u0447\u0430\u043b\u0430 \u0438\u0441\u0445\u043e\u0434\u043d\u043e\u0439 \u043b\u0438\u043d\u0438\u0438 \u0434\u043e \u043a\u043e\u043d\u0446\u0430 \u0443\u0447\u0430\u0441\u0442\u043a\u0430.<\/p>\n<p>  <\/p>\n<h2 id=\"linii-v-poligony\">\u041b\u0438\u043d\u0438\u0438 \u0432 \u043f\u043e\u043b\u0438\u0433\u043e\u043d\u044b<\/h2>\n<p>  <\/p>\n<p>\u0427\u0442\u043e \u0435\u0441\u043b\u0438 \u0432\u0430\u043c \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u043e\u0447\u0435\u0440\u0442\u0438\u0442\u044c \u0431\u0443\u0444\u0435\u0440 \u0432\u043e\u043a\u0440\u0443\u0433 \u043b\u0438\u043d\u0435\u0439\u043d\u043e\u0433\u043e \u043e\u0431\u044a\u0435\u043a\u0442\u0430? \u041f\u0440\u0438\u0447\u0435\u043c \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u044d\u0442\u043e \u0442\u043e\u043b\u044c\u043a\u043e \u0434\u043b\u044f \u0432\u0438\u0437\u0443\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u044f, \u043d\u0435 \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u044f \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u0441\u043b\u043e\u0439, \u0434\u0430\u0436\u0435 \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0439. \u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u0441\u0434\u0435\u043b\u0430\u0435\u043c \u0442\u0430\u043a\u043e\u0439 \u0431\u0443\u0444\u0435\u0440 (\u0441\u043c. \u0441\u043b\u043e\u0439 <strong>lines2<\/strong>).<\/p>\n<p>  <\/p>\n<p>\u0421\u0434\u0435\u043b\u0430\u0442\u044c \u044d\u0442\u043e \u043f\u0440\u043e\u0441\u0442\u043e, \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0435\u0441\u0442\u044c \u0444\u0443\u043d\u043a\u0446\u0438\u044f <code>buffer()<\/code>, \u043d\u043e \u0443 \u043d\u0435\u0435 \u0435\u0441\u0442\u044c \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b: \u0443 \u043d\u0435\u0435 \u0435\u0441\u0442\u044c \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0441\u0435\u0433\u043c\u0435\u043d\u0442\u043e\u0432 \u0432 \u0447\u0435\u0442\u0432\u0435\u0440\u0442\u0438 \u043e\u043a\u0440\u0443\u0436\u043d\u043e\u0441\u0442\u0438 \u0438 \u044d\u0442\u043e \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 \u043d\u0435 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043c\u0435\u043d\u044c\u0448\u0435 1. \u0422.\u0435. \u043f\u043e\u043b\u0443\u0447\u0430\u044e\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u0442\u0430\u043a\u0438\u0435 \u0431\u0443\u0444\u0435\u0440\u044b:<\/p>\n<p>  <\/p>\n<p><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/qx\/md\/_u\/qxmd_uapra_v94as_8zwxp_lz6s.png\"><\/p>\n<p>  <\/p>\n<p>\u0415\u0441\u043b\u0438 \u0432\u0430\u043c \u043d\u0443\u0436\u0435\u043d \u0442\u0430\u043a\u043e\u0439 \u0431\u0443\u0444\u0435\u0440 \u0441 \u043f\u043b\u043e\u0441\u043a\u0438\u043c\u0438 \u043a\u0440\u0430\u044f\u043c\u0438, \u0442\u043e \u043f\u043e\u043d\u0430\u0434\u043e\u0431\u0438\u0442\u0441\u044f \u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440 \u0433\u0435\u043e\u043c\u0435\u0442\u0440\u0438\u0438.<\/p>\n<p>  <\/p>\n<p><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/iv\/2c\/ef\/iv2cef47_pfu5aymfmjt192i8iy.png\"><\/p>\n<p>  <\/p>\n<p>\u041c\u043e\u0436\u0435\u0442 \u043f\u043e\u043a\u0430\u0437\u0430\u0442\u044c\u0441\u044f, \u0447\u0442\u043e \u043d\u0430\u043c \u043f\u043e\u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0441\u043e\u0437\u0434\u0430\u0435\u0442 \u043f\u043e\u043b\u0438\u0433\u043e\u043d, \u043d\u043e \u043c\u044b \u043e\u0431\u043e\u0439\u0434\u0435\u043c\u0441\u044f \u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440\u043e\u043c \u043b\u0438\u043d\u0438\u0439. \u041d\u0430\u043c \u043f\u043e\u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0440\u0430\u0437\u043c\u0435\u0440 \u0431\u0443\u0444\u0435\u0440\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043c\u044b \u0441\u043e\u0445\u0440\u0430\u043d\u0438\u043c \u0432 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439. \u0417\u0430\u0442\u0435\u043c \u0438\u0441\u0445\u043e\u0434\u043d\u0443\u044e \u043b\u0438\u043d\u0438\u044e \u043c\u044b \u0441\u043c\u0435\u0441\u0442\u0438\u043c \u043d\u0430 \u0440\u0430\u0437\u043c\u0435\u0440 \u0431\u0443\u0444\u0435\u0440\u0430 \u0432 \u043e\u0431\u0435 \u0441\u0442\u043e\u0440\u043e\u043d\u044b, \u0443\u0432\u0435\u043b\u0438\u0447\u0438\u043c \u0434\u043b\u0438\u043d\u0443 \u043f\u043e\u043b\u0443\u0447\u0438\u0432\u0448\u0438\u0445\u0441\u044f \u043b\u0438\u043d\u0438\u0439 \u0438 \u043d\u0430\u0440\u0438\u0441\u0443\u0435\u043c \u0442\u043e\u0440\u0446\u044b. \u0412\u043e\u0442 \u043a\u043e\u0434:<\/p>\n<p>  <\/p>\n<pre><code class=\"lua\">with_variable(     'distance',     4000, -- \u0440\u0430\u0437\u043c\u0435\u0440 \u0431\u0443\u0444\u0435\u0440\u0430     with_variable(         'offset_lines', -- \u043c\u0430\u0441\u0441\u0438\u0432 \u0441 \u0434\u0432\u0443\u043c\u044f \u0441\u043c\u0435\u0449\u0435\u043d\u043d\u044b\u043c\u0438 \u043b\u0438\u043d\u0438\u044f\u043c\u0438         array(             extend(                 offset_curve($geometry, @distance, join:=2),                 @distance, @distance             ),             extend(                 offset_curve($geometry, -@distance, join:=2),                 @distance, @distance             )         ),         collect_geometries(             @offset_lines[0], -- \u043b\u0438\u043d\u0438\u044f 1             @offset_lines[1], -- \u043b\u0438\u043d\u0438\u044f 2             make_line( -- \u0441\u043e\u0435\u0434\u0438\u043d\u044f\u0435\u043c \u043f\u0435\u0440\u0432\u044b\u0435 \u0442\u043e\u0447\u043a\u0438 \u043b\u0438\u043d\u0438\u0438 1 \u0438 \u043b\u0438\u043d\u0438\u0438 2                 start_point(@offset_lines[0]),                 start_point(@offset_lines[1])             ),             make_line( -- \u0441\u043e\u0435\u0434\u0438\u043d\u044f\u0435\u043c \u043a\u0440\u0430\u0439\u043d\u0438\u0435 \u0442\u043e\u0447\u043a\u0438 \u043b\u0438\u043d\u0438\u0438 1 \u0438 \u043b\u0438\u043d\u0438\u0438 2                 end_point(@offset_lines[0]),                 end_point(@offset_lines[1])             )         )     ) )<\/code><\/pre>\n<p>  <\/p>\n<p>\u0414\u0430, \u0437\u0434\u0435\u0441\u044c \u0432\u043b\u043e\u0436\u0435\u043d\u043d\u044b\u0435 <code>with_variable<\/code>, \u043d\u043e, \u043d\u0430\u0434\u0435\u044e\u0441\u044c, \u0447\u0438\u0442\u0430\u0435\u043c\u043e\u0441\u0442\u044c \u043e\u043d\u0438 \u043d\u0435 \u0441\u043d\u0438\u0436\u0430\u044e\u0442. \u041e\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u044e\u0441\u044c \u043d\u0430 \u043d\u043e\u0432\u044b\u0445 \u043c\u043e\u043c\u0435\u043d\u0442\u0430\u0445. \u0412 \u0441\u043f\u0438\u0441\u043a\u0435 <code>@offset_lines<\/code> \u0441\u043e\u0437\u0434\u0430\u044e\u0442\u0441\u044f \u0434\u0432\u0435 \u0441\u043c\u0435\u0449\u0435\u043d\u043d\u044b\u0435, \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0438\u0441\u0445\u043e\u0434\u043d\u043e\u0439, \u043b\u0438\u043d\u0438\u0438 (\u0441\u043c\u0435\u0449\u0435\u043d\u0438\u0435 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0444\u0443\u043d\u043a\u0446\u0438\u0438 <code>offset_curve()<\/code>), \u0434\u043b\u0438\u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0431\u044b\u043b\u0430 \u0443\u0432\u0435\u043b\u0438\u0447\u0435\u043d\u0430 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0444\u0443\u043d\u043a\u0446\u0438\u0438 <code>extend()<\/code>. \u0414\u0430\u043b\u0435\u0435 \u0441\u043e\u0431\u0438\u0440\u0430\u0435\u043c \u043b\u0438\u043d\u0438\u0438 \u0438 \u0441\u043e\u0437\u0434\u0430\u0435\u043c \u0442\u043e\u0440\u0446\u044b, \u0441\u043e\u0435\u0434\u0438\u043d\u044f\u044f \u043d\u0430\u0447\u0430\u043b\u044c\u043d\u044b\u0435 \u2014 \u0444\u0443\u043d\u043a\u0446\u0438\u044f <code>start_point()<\/code> \u0438 \u043a\u043e\u043d\u0435\u0447\u043d\u044b\u0435 \u0442\u043e\u0447\u043a\u0438 \u2014 \u0444\u0443\u043d\u043a\u0446\u0438\u044f <code>end_point()<\/code>.<\/p>\n<p>  <\/p>\n<h2 id=\"pervyy--poshel-vtoroy--poshel\">\u041f\u0435\u0440\u0432\u044b\u0439 \u2014 \u043f\u043e\u0448\u0435\u043b, \u0432\u0442\u043e\u0440\u043e\u0439 \u2014 \u043f\u043e\u0448\u0435\u043b<\/h2>\n<p>  <\/p>\n<p>\u0414\u043e\u043f\u0443\u0441\u0442\u0438\u043c \u043d\u0430\u043c \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u043b\u0438\u043d\u0438\u044e, \u0447\u0435\u0442\u043d\u044b\u0435 \u0441\u0435\u0433\u043c\u0435\u043d\u0442\u044b \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0438\u043c\u0435\u044e\u0442 \u043e\u0434\u0438\u043d \u0441\u0442\u0438\u043b\u044c, \u0430 \u043d\u0435\u0447\u0435\u0442\u043d\u044b\u0435 \u0434\u0440\u0443\u0433\u043e\u0439. \u0413\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440 \u0433\u0435\u043e\u043c\u0435\u0442\u0440\u0438\u0438 \u0432 \u043f\u043e\u043c\u043e\u0449\u044c (\u0441\u043c. \u0441\u043b\u043e\u0439 <strong>lines3<\/strong>). \u0421\u043e\u0437\u0434\u0430\u0434\u0438\u043c \u0434\u0432\u0430 \u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440\u0430 \u0441 \u043b\u0438\u043d\u0435\u0439\u043d\u044b\u043c \u0442\u0438\u043f\u043e\u043c, \u043a\u043e\u0434 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043f\u043e\u0447\u0442\u0438 \u043e\u0434\u0438\u043d\u0430\u043a\u043e\u0432\u044b\u0439:<\/p>\n<p>  <\/p>\n<pre><code class=\"lua\">with_variable(     'lines',     segments_to_lines($geometry),     collect_geometries(         array_foreach(             generate_series(2, num_geometries(@lines), 2),             geometry_n(@lines, @element)         )     ) )<\/code><\/pre>\n<p>  <\/p>\n<p>\u0424\u0443\u043d\u043a\u0446\u0438\u044f <code>segments_to_lines()<\/code> \u043d\u0443\u0436\u043d\u0430 \u0437\u0434\u0435\u0441\u044c \u0434\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u0440\u0430\u0437\u0431\u0438\u0442\u044c \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u0439 \u043e\u0431\u044a\u0435\u043a\u0442 \u043d\u0430 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0435 \u043b\u0438\u043d\u0438\u0438 \u2014 \u0431\u044b\u043b\u0430 \u043b\u0438\u043d\u0438\u044f, \u0441\u0442\u0430\u043b\u0430 \u043c\u0443\u043b\u044c\u0442\u0438\u043b\u0438\u043d\u0438\u044f. \u0414\u0430\u043b\u0435\u0435 \u0441\u043e\u0431\u0438\u0440\u0430\u0435\u043c \u0447\u0435\u0442\u043d\u044b\u0435 \u0438 \u043d\u0435\u0447\u0435\u0442\u043d\u044b\u0435 \u0447\u0430\u0441\u0442\u0438, \u0440\u0430\u0437\u043d\u0438\u0446\u0430 \u043c\u0435\u0436\u0434\u0443 \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u044f\u043c\u0438 \u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440\u043e\u0432 \u0442\u043e\u043b\u044c\u043a\u043e \u0432 \u043f\u0435\u0440\u0432\u043e\u043c \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 <code>generate_series<\/code>. \u041f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u0432 \u0438\u0442\u043e\u0433\u0435:<\/p>\n<p>  <\/p>\n<p><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/vm\/b_\/ui\/vmb_uiguoulfsqxf8kx6fxnhns4.png\"><\/p>\n<p>  <\/p>\n<h2 id=\"krestiki\">\u041a\u0440\u0435\u0441\u0442\u0438\u043a\u0438<\/h2>\n<p>  <\/p>\n<p>\u041f\u0435\u0440\u0435\u0445\u043e\u0434\u0438\u043c \u043a \u043f\u043e\u043b\u0438\u0433\u043e\u043d\u0430\u043c. \u0411\u044b\u0432\u0430\u044e\u0442 \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u0438, \u043a\u043e\u0433\u0434\u0430 \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u043d\u0430\u0440\u0438\u0441\u043e\u0432\u0430\u0442\u044c \u043f\u043e\u043f\u0435\u0440\u0435\u0447\u043d\u044b\u0435 \u043b\u0438\u043d\u0438\u0438 \u043c\u0435\u0436\u0434\u0443 \u0443\u0437\u043b\u0430\u043c\u0438 \u043f\u043e\u043b\u0438\u0433\u043e\u043d\u0430 (\u0441\u043b\u043e\u0439 <strong>poly2<\/strong>).<\/p>\n<p>  <\/p>\n<p><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/eu\/5a\/mn\/eu5amnxzyzgue-ji3ll3yt3ii6i.png\"><\/p>\n<p>  <\/p>\n<p>\u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440 \u0433\u0435\u043e\u043c\u0435\u0442\u0440\u0438\u0438 \u0441 \u0442\u0438\u043f\u043e\u043c \u00ab\u043b\u0438\u043d\u0438\u044f\/\u043c\u0443\u043b\u044c\u0442\u0438\u043b\u0438\u043d\u0438\u044f\u00bb \u0441\u043e \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u0435\u043c:<\/p>\n<p>  <\/p>\n<pre><code class=\"lua\">with_variable(     'points_num',     -- \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0443\u043d\u0438\u043a\u0430\u043b\u044c\u043d\u044b\u0445 \u0442\u043e\u0447\u0435\u043a \u0432 \u043f\u043e\u043b\u0438\u0433\u043e\u043d\u0435     num_points($geometry) - 1, --      collect_geometries(         array_foreach(             -- \u043d\u043e\u043c\u0435\u0440\u0430 \u0442\u043e\u0447\u0435\u043a \u043f\u0435\u0440\u0432\u043e\u0439 \u043f\u043e\u043b\u043e\u0432\u0438\u043d\u044b \u043f\u043e\u043b\u0438\u0433\u043e\u043d\u0430             generate_series(1, round(@points_num \/ 2.0)),             make_line(                 point_n( -- \u0442\u0435\u043a\u0443\u0449\u0430\u044f \u0442\u043e\u0447\u043a\u0430                     $geometry,                     @element                 ),                  point_n( -- \u043f\u0440\u043e\u0442\u0438\u0432\u043e\u043f\u043e\u043b\u043e\u0436\u043d\u0430\u044f \u0442\u043e\u0447\u043a\u0430                     $geometry,                     @element + floor(@points_num \/ 2.0)                 )             )         )     ) )<\/code><\/pre>\n<p>  <\/p>\n<p>\u0422\u0430\u043a \u043a\u0430\u043a \u043d\u0430\u043c \u043d\u0430\u0434\u043e \u00ab\u043e\u0431\u043e\u0439\u0442\u0438\u00bb \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u043e\u043b\u043e\u0432\u0438\u043d\u0443 \u0443\u0437\u043b\u043e\u0432, \u0442\u043e \u0444\u0443\u043d\u043a\u0446\u0438\u044f <code>generate_series()<\/code> \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u0435\u0442 \u0441\u0435\u0440\u0438\u044e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439 \u0441 \u043d\u043e\u043c\u0435\u0440\u0430\u043c\u0438 \u043f\u0435\u0440\u0432\u043e\u0439 \u043f\u043e\u043b\u043e\u0432\u0438\u043d\u044b \u0443\u0437\u043b\u043e\u0432. \u0414\u0430\u043b\u0435\u0435 \u0440\u0438\u0441\u0443\u0435\u0442\u0441\u044f \u043b\u0438\u043d\u0438\u044f \u0438\u0437 \u0442\u0435\u043a\u0443\u0449\u0435\u0433\u043e \u0443\u0437\u043b\u0430 \u0432 \u043f\u0440\u043e\u0442\u0438\u0432\u043e\u043f\u043e\u043b\u043e\u0436\u043d\u044b\u0439.<\/p>\n<p>  <\/p>\n<h2 id=\"zvezdochki\">\u0417\u0432\u0435\u0437\u0434\u043e\u0447\u043a\u0438<\/h2>\n<p>  <\/p>\n<p>\u0421\u043d\u043e\u0432\u0430 \u043f\u043e\u043b\u0438\u0433\u043e\u043d\u044b, \u0442\u0435\u043f\u0435\u0440\u044c \u0442\u0430\u043a\u0438\u0435 (\u0441\u043b\u043e\u0439 <strong>poly3<\/strong>):<br \/>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/3n\/uz\/fy\/3nuzfydrnxb84cymt1jjdhfvlsk.png\"><\/p>\n<p>  <\/p>\n<p>\u0412\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u0442\u0430\u043a\u043e\u0435:<\/p>\n<p>  <\/p>\n<pre><code class=\"lua\">collect_geometries(     array_foreach(         generate_series(1, num_points($geometry) - 1),         make_line(             centroid($geometry),             point_n($geometry, @element)         )     ) )<\/code><\/pre>\n<p>  <\/p>\n<p>\u041d\u0438\u0447\u0435\u0433\u043e \u043d\u043e\u0432\u043e\u0433\u043e, \u043a\u0440\u043e\u043c\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 <code>centroid()<\/code>, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0446\u0435\u043d\u0442\u0440 \u043c\u0430\u0441\u0441 \u043f\u043e\u043b\u0438\u0433\u043e\u043d\u0430, \u043d\u0443 \u0438 \u0441\u0435\u0440\u0438\u044f \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u0431\u0435\u0437 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0433\u043e \u0443\u0437\u043b\u0430 \u043f\u043e\u043b\u0438\u0433\u043e\u043d\u0430, \u0442\u0430\u043a \u043a\u0430\u043a \u043e\u043d \u0441\u043e\u0432\u043f\u0430\u0434\u0430\u0435\u0442 \u0441 \u043f\u0435\u0440\u0432\u044b\u043c.<\/p>\n<p>  <\/p>\n<h2 id=\"poligon-v-liniyu\">\u041f\u043e\u043b\u0438\u0433\u043e\u043d \u0432 \u043b\u0438\u043d\u0438\u044e<\/h2>\n<p>  <\/p>\n<p>\u0414\u043e\u043f\u0443\u0441\u0442\u0438\u043c \u0443 \u0432\u0430\u0441 \u0435\u0441\u0442\u044c \u0441\u043b\u043e\u0439 \u0441 \u043f\u043e\u043b\u0438\u0433\u043e\u043d\u0430\u043b\u044c\u043d\u044b\u043c\u0438 \u043e\u0431\u044a\u0435\u043a\u0442\u0430\u043c\u0438 \u0438 \u0447\u0430\u0441\u0442\u044c \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432 \u043d\u0430\u0434\u043e \u043e\u0442\u043e\u0431\u0440\u0430\u0437\u0438\u0442\u044c \u0432 \u0432\u0438\u0434\u0435 \u0448\u0442\u0440\u0438\u0445\u043e\u0432\u043e\u0439 \u043b\u0438\u043d\u0438\u0438 \u2014 \u0441\u043b\u043e\u0439 <strong>poly4<\/strong>. \u0422\u0435 \u043e\u0431\u044a\u0435\u043a\u0442\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u0430\u0434\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0448\u0442\u0440\u0438\u0445\u043e\u0432\u043e\u0439 \u043b\u0438\u043d\u0438\u0435\u0439, \u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u0442\u043e\u043d\u043a\u0438\u043c\u0438 \u0438 \u0438\u043c\u0435\u044e\u0442 \u044f\u0432\u043d\u044b\u0435 \u00ab\u0442\u043e\u0440\u0446\u044b\u00bb, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043a\u043e\u0440\u043e\u0447\u0435 \u043b\u044e\u0431\u043e\u0439 \u0438\u0437 \u0434\u0440\u0443\u0433\u0438\u0445 \u0441\u0442\u043e\u0440\u043e\u043d. \u00ab\u0422\u043e\u043d\u043a\u0438\u0439\u00bb \u043e\u0431\u044a\u0435\u043a\u0442 \u2014 \u044d\u0442\u043e \u0442\u0430\u043a\u043e\u0439 \u043e\u0431\u044a\u0435\u043a\u0442, \u043a\u043e\u0442\u043e\u0440\u044b\u0439, \u043f\u0440\u0438 \u043b\u044e\u0431\u043e\u043c <em>\u043f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u043c<\/em> \u043c\u0430\u0441\u0448\u0442\u0430\u0431\u0435 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f, \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u043b\u0438\u043d\u0438\u0435\u0439. \u0412 \u0438\u0442\u043e\u0433\u0435 \u0434\u043e\u043b\u0436\u043d\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c\u0441\u044f \u0442\u0430\u043a:<\/p>\n<p>  <\/p>\n<p><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/g6\/e3\/cs\/g6e3cs0j0m-h-zhlshdcnm-dp5m.png\"><\/p>\n<p>  <\/p>\n<p>\u0415\u0441\u043b\u0438 \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0448\u0442\u0440\u0438\u0445\u043e\u0432\u0443\u044e \u043e\u0431\u0432\u043e\u0434\u043a\u0443 \u0432\u0441\u0435\u0433\u043e \u043f\u043e\u043b\u0438\u0433\u043e\u043d\u0430, \u0442\u043e \u0441 \u0440\u0430\u0437\u043d\u044b\u0445 \u0441\u0442\u043e\u0440\u043e\u043d \u043e\u043d\u0430 \u043d\u0435 \u0431\u0443\u0434\u0435\u0442 \u0441\u0438\u043d\u0445\u0440\u043e\u043d\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u0430 \u0438 \u0431\u0443\u0434\u0435\u0442 \u043f\u0435\u0440\u0435\u043a\u0440\u044b\u0432\u0430\u0442\u044c\u0441\u044f, \u0442.\u00a0\u0435. \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0448\u0442\u0440\u0438\u0445\u043e\u0432\u043a\u0443 \u0438\u043c\u0435\u043d\u043d\u043e \u043f\u043e \u043e\u0434\u043d\u043e\u0439 \u0441\u0442\u043e\u0440\u043e\u043d\u0435. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440 \u0433\u0435\u043e\u043c\u0435\u0442\u0440\u0438\u0438 \u043b\u0438\u043d\u0435\u0439\u043d\u043e\u0433\u043e \u0442\u0438\u043f\u0430, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 \u0442\u0430\u043a\u043e\u0439:<\/p>\n<p>  <\/p>\n<pre><code class=\"lua\">with_variable(     'lines',     segments_to_lines($geometry), -- \u0440\u0430\u0437\u0431\u0438\u0432\u0430\u0435\u043c \u043b\u0438\u043d\u0438\u044e \u043d\u0430 \u0441\u0435\u0433\u043c\u0435\u043d\u0442\u044b     collect_geometries(         array_foreach(             segments_between_sides_nums( -- \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u043d\u0430 Python                 array_foreach(                     generate_series(1, num_geometries(@lines)),                     -- \u044d\u043b\u0435\u043c\u0435\u043d\u0442 \u0441\u043f\u0438\u0441\u043a\u0430 [\u043d\u043e\u043c\u0435\u0440 \u0441\u0435\u0433\u043c\u0435\u043d\u0442\u0430, \u0434\u043b\u0438\u043d\u0430 \u0441\u0435\u0433\u043c\u0435\u043d\u0442\u0430]                     array(                         @element,                         length(                             geometry_n(@lines, @element)                         )                     )                 )             ),             geometry_n(@lines, @element)         )     ) )<\/code><\/pre>\n<p>  <\/p>\n<p>\u0421\u0443\u0442\u044c \u0441\u043e\u0441\u0442\u043e\u0438\u0442 \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e\u0431\u044b \u043d\u0430\u0439\u0442\u0438 \u0438\u043d\u0434\u0435\u043a\u0441\u044b \u0442\u043e\u0440\u0446\u043e\u0432 \u0438 \u0441\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0441\u043f\u0438\u0441\u043e\u043a \u043d\u043e\u043c\u0435\u0440\u043e\u0432 \u0441\u0435\u0433\u043c\u0435\u043d\u0442\u043e\u0432 \u043c\u0435\u0436\u0434\u0443 \u043d\u0438\u043c\u0438 \u0434\u043b\u044f \u043e\u0442\u0440\u0438\u0441\u043e\u0432\u043a\u0438 \u0448\u0442\u0440\u0438\u0445\u043e\u0432\u043e\u0439 \u043b\u0438\u043d\u0438\u0438. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043d\u0430\u0434\u043e \u0441\u0432\u044f\u0437\u0430\u0442\u044c \u0438\u043d\u0434\u0435\u043a\u0441 \u0441\u0442\u043e\u0440\u043e\u043d\u044b \u0441 \u0435\u0435 \u0434\u043b\u0438\u043d\u043e\u0439, \u043e\u0442\u0441\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u044d\u0442\u043e\u0442 \u0441\u043f\u0438\u0441\u043e\u043a, \u0442\u043e\u0433\u0434\u0430 \u043c\u043e\u0436\u043d\u043e \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0441\u0435\u0440\u0438\u044e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439 \u043c\u0435\u0436\u0434\u0443 \u0438\u043d\u0434\u0435\u043a\u0441\u0430\u043c\u0438 \u0432 \u043f\u0435\u0440\u0432\u044b\u0445 \u0434\u0432\u0443\u0445 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430\u0445 \u043e\u0442\u0441\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0433\u043e \u0441\u043f\u0438\u0441\u043a\u0430.<\/p>\n<p>  <\/p>\n<p>\u0421\u043f\u0438\u0441\u043e\u043a \u0441 \u043d\u043e\u043c\u0435\u0440\u0430\u043c\u0438 \u0441\u0435\u0433\u043c\u0435\u043d\u0442\u043e\u0432 \u043c\u0435\u0436\u0434\u0443 \u0442\u043e\u0440\u0446\u0430\u043c\u0438 \u0441\u043e\u0437\u0434\u0430\u0435\u0442\u0441\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u0435\u0439 <code>segments_between_sides_num()<\/code>. \u042d\u0442\u043e\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u043d\u0435\u0442 \u0432 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u043e\u043c QGIS \u0438 \u0434\u043b\u044f \u0435\u0435 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0432\u043e\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u0441\u044f Python (\u0444\u0430\u0439\u043b <strong>custom.py<\/strong> \u043d\u0430\u0434\u043e \u043f\u043e\u043b\u043e\u0436\u0438\u0442\u044c \u0432 \u043f\u0430\u043f\u043a\u0443 <strong>~\/.local\/share\/QGIS\/QGIS3\/profiles\/default\/python\/expressions<\/strong>):<\/p>\n<p>  <\/p>\n<pre><code class=\"python\">@qgsfunction(args=&quot;auto&quot;, group=&quot;\u0421\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0435&quot;) def segments_between_sides_nums(sides, feature, parent):     &quot;&quot;&quot;     \u0412\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0441\u043f\u0438\u0441\u043e\u043a \u0441 \u043d\u043e\u043c\u0435\u0440\u0430\u043c\u0438 \u0441\u0435\u0433\u043c\u0435\u043d\u0442\u043e\u0432 \u043f\u043e\u043b\u0438\u0433\u043e\u043d\u0430 \u043c\u0435\u0436\u0434\u0443 \u0441\u0430\u043c\u044b\u043c\u0438 \u043a\u043e\u0440\u043e\u0442\u043a\u0438\u043c\u0438     \u0441\u0442\u043e\u0440\u043d\u0430\u043c\u0438.     sides - \u0441\u043f\u0438\u0441\u043e\u043a \u0441\u043e \u0441\u043f\u0438\u0441\u043a\u0430\u043c\u0438 \u0432\u0438\u0434\u0430 (\u043d\u043e\u043c\u0435\u0440 \u0441\u0435\u0433\u043c\u0435\u043d\u0442\u0430, \u0434\u043b\u0438\u043d\u0430 \u0441\u0435\u0433\u043c\u0435\u043d\u0442\u0430)     &quot;&quot;&quot;     sorted_sides = sorted(sides, key=lambda x: x[1])     return list(range(int(sorted_sides[0][0]) + 1, int(sorted_sides[1][0])))<\/code><\/pre>\n<p>  <\/p>\n<p>\u0412 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u043d\u0430 Python \u043c\u044b \u0441\u043e\u0440\u0442\u0438\u0440\u0443\u0435\u043c \u0432\u0445\u043e\u0434\u043d\u043e\u0439 \u0441\u043f\u0438\u0441\u043e\u043a \u043f\u043e \u0432\u0442\u043e\u0440\u043e\u043c\u0443 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044e \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430, \u0442.\u0435. \u043f\u043e \u0434\u043b\u0438\u043d\u0435 \u0441\u0435\u0433\u043c\u0435\u043d\u0442\u0430 (\u0441\u0430\u043c\u044b\u0435 \u043a\u043e\u0440\u043e\u0442\u043a\u0438\u0435 \u043e\u043a\u0430\u0436\u0443\u0442\u0441\u044f \u043f\u0435\u0440\u0432\u044b\u043c\u0438), \u0430 \u043f\u043e\u0442\u043e\u043c \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u0435\u043c \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u0438\u043d\u0434\u0435\u043a\u0441\u043e\u0432 \u043d\u0443\u0436\u043d\u044b\u0445 \u0441\u0442\u043e\u0440\u043e\u043d.<\/p>\n<p>  <\/p>\n<p>\u0421 \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u044f\u043c\u0438 \u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440\u043e\u0432 \u0433\u0435\u043e\u043c\u0435\u0442\u0440\u0438\u0439 \u0437\u0430\u0432\u0435\u0440\u0448\u0438\u043b\u0438. \u041f\u043e\u043f\u0440\u043e\u0431\u0443\u0435\u043c \u043f\u043e\u043d\u044f\u0442\u044c, \u0430 \u043f\u043e\u0447\u0435\u043c\u0443 \u043d\u0435\u043b\u044c\u0437\u044f \u0441\u0440\u0430\u0437\u0443 \u043d\u0430 Python?<\/p>\n<p>  <\/p>\n<h2 id=\"naivnyy-benchmarking\">\u041d\u0430\u0438\u0432\u043d\u044b\u0439 \u0431\u0435\u043d\u0447\u043c\u0430\u0440\u043a\u0438\u043d\u0433<\/h2>\n<p>  <\/p>\n<p>\u041c\u043d\u0435 \u0432\u0441\u0435\u0433\u0434\u0430 \u0431\u044b\u043b\u043e \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e, \u0430 \u0447\u0442\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0431\u044b\u0441\u0442\u0440\u0435\u0435: \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u044f QGIS \u0438\u043b\u0438 \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u044b\u0439 \u043a\u043e\u0434 \u043d\u0430 Python? \u041d\u0435\u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u043d\u0430\u0438\u0432\u043d\u043e\u0435 \u0438\u0441\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u0435 \u043d\u0430 \u044d\u0442\u0443 \u0442\u0435\u043c\u0443 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u043e \u043d\u0438\u0436\u0435. \u0418\u0441\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u0435 \u043d\u0435 \u0441\u0442\u0440\u043e\u0433\u043e\u0435, \u0435\u0433\u043e \u0446\u0435\u043b\u044c \u043f\u0440\u043e\u0441\u0442\u043e \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u0435\u0441\u0442\u044c \u043b\u0438 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u0430\u044f \u0440\u0430\u0437\u043d\u0438\u0446\u0430 \u0432 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438.<\/p>\n<p>  <\/p>\n<p><strong>\u0418\u0441\u0445\u043e\u0434\u043d\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435<\/strong><\/p>\n<p>  <\/p>\n<ul>\n<li>\u0421\u043b\u043e\u0439 <strong>test_poly<\/strong> \u0441 100000 \u043f\u043e\u043b\u0438\u0433\u043e\u043d\u0430\u043c\u0438, \u0441 \u0440\u0430\u0437\u043d\u044b\u043c \u0440\u0430\u0437\u043c\u0435\u0440\u043e\u043c \u0438 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e\u043c \u0443\u0437\u043b\u043e\u0432 \u043e\u0442 3 \u0434\u043e 20.<\/li>\n<\/ul>\n<p>  <\/p>\n<p>\u0421\u043b\u043e\u0439 \u0441\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u043d \u0441\u043a\u0440\u0438\u043f\u0442\u043e\u043c \u0432 \u0444\u0430\u0439\u043b\u0435 <strong>create_poly_lyr.py<\/strong>, \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 \u0442\u043e\u0447\u0435\u0447\u043d\u043e\u0433\u043e \u0441\u043b\u043e\u044f \u0441\u043e \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u043c\u0438 \u0442\u043e\u0447\u043a\u0430\u043c\u0438 (\u0432 \u043f\u0440\u043e\u0435\u043a\u0442 \u043d\u0435 \u0432\u043a\u043b\u044e\u0447\u0435\u043d).<\/p>\n<p>  <\/p>\n<p><strong>\u0422\u0435\u0441\u0442<\/strong><\/p>\n<p>  <\/p>\n<ul>\n<li>\u0414\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0438\u0437 \u043e\u0431\u044a\u0435\u043a\u0442\u0430 \u0441\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u0435\u043c \u043d\u0430\u0431\u043e\u0440 \u043b\u0438\u043d\u0438\u0439, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u043b\u0438\u043d\u0438\u0438 \u0438\u0434\u0443\u0442 \u0438\u0437 \u0446\u0435\u043d\u0442\u0440\u0430 \u043f\u043e\u043b\u0438\u0433\u043e\u043d\u0430 \u043a \u043a\u0430\u0436\u0434\u043e\u043c\u0443 \u0438\u0437 \u0435\u0433\u043e \u0443\u0437\u043b\u043e\u0432, \u043f\u043e\u0445\u043e\u0436\u0438\u0439 \u043d\u0430 \u043f\u0440\u0438\u043c\u0435\u0440 \u0432 \u0440\u0430\u0437\u0434\u0435\u043b\u0435 \u00ab<strong>\u0417\u0432\u0435\u0437\u0434\u043e\u0447\u043a\u0438<\/strong>\u00bb. \u0420\u0430\u0437\u043d\u0438\u0446\u0430 \u0441 \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u044b\u043c \u043f\u0440\u0438\u043c\u0435\u0440\u043e\u043c \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u043b\u0438\u043d\u0438\u044f \u0431\u0443\u0434\u0435\u0442 \u0441\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u0430 \u0438 \u0434\u043b\u044f \u043a\u0440\u0430\u0439\u043d\u0435\u0433\u043e \u0443\u0437\u043b\u0430 \u043f\u043e\u043b\u0438\u0433\u043e\u043d\u0430 (\u0441\u043e\u0432\u043f\u0430\u0434\u0435\u0442 \u0441 \u043b\u0438\u043d\u0438\u0435\u0439 \u0432 \u043f\u0435\u0440\u0432\u044b\u0439 \u0443\u0437\u0435\u043b).<\/li>\n<\/ul>\n<p>  <\/p>\n<p>\u0413\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0431\u0443\u0434\u0435\u043c \u0441\u043a\u0440\u0438\u043f\u0442\u043e\u043c \u043d\u0430 Python, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u0431\u0443\u0434\u0443\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u044b \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u044f QGIS, \u0430 \u043f\u043e\u0442\u043e\u043c \u0432\u044b\u0445\u043e\u0434\u043d\u0430\u044f \u0433\u0435\u043e\u043c\u0435\u0442\u0440\u0438\u044f \u0431\u0443\u0434\u0435\u0442 \u043f\u043e\u0441\u0442\u0440\u043e\u0435\u043d\u0430 \u0438\u0441\u043a\u043b\u044e\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043d\u0430 Python. \u0424\u0440\u0430\u0433\u043c\u0435\u043d\u0442 \u0444\u0430\u0439\u043b\u0430 <strong>expression_benchmarking.py<\/strong>:<\/p>\n<p>  <\/p>\n<pre><code class=\"python\">EXPRESSION = &quot;&quot;&quot; collect_geometries(     array_foreach(         generate_series(1, num_points($geometry)),         make_line(             centroid($geometry),             point_n($geometry, @element)         )     ) ) &quot;&quot;&quot; \u2026 for counter, poly in enumerate(lyr_polys.getFeatures()):     exp = QgsExpression(EXPRESSION)     context = QgsExpressionContext()     context.setFeature(poly)     star = exp.evaluate(context)<\/code><\/pre>\n<p>  <\/p>\n<p>\u0424\u0440\u0430\u0433\u043c\u0435\u043d\u0442 \u0444\u0430\u0439\u043b\u0430 <strong>python_benchmarking.py<\/strong>:<\/p>\n<p>  <\/p>\n<pre><code class=\"python\">for counter, poly in enumerate(lyr_polys.getFeatures()):     centroid = QgsPoint(poly.geometry().centroid().asPoint())     star = QgsMultiLineString()     for vertex in poly.geometry().vertices():         line = QgsLineString(centroid, vertex)         star.addGeometry(line)<\/code><\/pre>\n<p>  <\/p>\n<p><strong>\u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b<\/strong><br \/>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/bo\/xe\/f1\/boxef1u9kphkummosqk_m2t6p-4.png\"><\/p>\n<p>  <\/p>\n<p>\u041d\u0430 \u043c\u043e\u0435\u043c \u043d\u043e\u0443\u0442\u0431\u0443\u043a\u0435 \u0441\u0440\u0435\u0434\u043d\u0435\u0435 \u0432\u0440\u0435\u043c\u044f \u0434\u043b\u044f Python \u0441\u043e\u0441\u0442\u0430\u0432\u0438\u043b\u043e <strong>5,3<\/strong> \u0441\u0435\u043a\u0443\u043d\u0434\u044b, \u0430 \u0434\u043b\u044f \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u0439 <strong>23,16<\/strong> \u0441\u0435\u043a\u0443\u043d\u0434\u044b. Python \u043e\u043a\u0430\u0437\u0430\u043b\u0441\u044f \u0431\u044b\u0441\u0442\u0440\u0435\u0435 \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u0439 \u0432 \u0441\u0440\u0435\u0434\u043d\u0435\u043c \u0432 <strong>4,5<\/strong> \u0440\u0430\u0437\u0430. \u041c\u0435\u0442\u043e\u0434 \u043c\u043e\u0436\u043d\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0441\u0442\u0440\u043e\u0436\u0435, \u043d\u043e, \u0441\u043a\u0430\u0436\u0435\u043c \u0442\u0430\u043a, \u043c\u044b \u043f\u043e\u043f\u0440\u043e\u0431\u043e\u0432\u0430\u043b\u0438 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u044c \u0442\u0440\u0435\u043d\u0434.<\/p>\n<p>  <\/p>\n<h3 id=\"interpretaciya-rezultatov\">\u0418\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0430\u0446\u0438\u044f \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u043e\u0432<\/h3>\n<p>  <\/p>\n<p><strong>\u041f\u043b\u044e\u0441\u044b \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u0439:<\/strong><\/p>\n<p>  <\/p>\n<ul>\n<li>\u0412\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u043b\u0430\u043a\u043e\u043d\u0438\u0447\u043d\u0435\u0439. \u0427\u0442\u043e\u0431\u044b \u043f\u043e\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u00ab\u0437\u0432\u0435\u0437\u0434\u043e\u0447\u043a\u0443\u00bb \u0434\u043b\u044f \u0432\u0441\u0435\u0445 \u0443\u0437\u043b\u043e\u0432, \u043a\u0440\u043e\u043c\u0435 \u043a\u0440\u0430\u0439\u043d\u0435\u0433\u043e, \u0432 \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u044f\u0445 \u043d\u0430\u0434\u043e \u043f\u0440\u043e\u0441\u0442\u043e \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u00ab- 1\u00bb \u0432 \u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440 \u0441\u0435\u0440\u0438\u0438 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439, \u0430 \u043d\u0430 Python, \u043f\u043e\u043d\u0430\u0434\u043e\u0431\u044f\u0442\u0441\u044f \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u0441\u0442\u0440\u043e\u043a\u0438 \u043a\u043e\u0434\u0430.<\/li>\n<li>\u0412\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u044e\u0442\u0441\u044f \u0432\u043d\u0443\u0442\u0440\u0438 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 QGIS, \u0442.\u00a0\u0435. \u0440\u0430\u0441\u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u044f\u044f \u0441\u0440\u0435\u0434\u0438 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439 \u043f\u0440\u043e\u0435\u043a\u0442, \u0432\u044b \u0441\u0440\u0430\u0437\u0443 \u0440\u0430\u0441\u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u044f\u0435\u0442\u0435 \u0432\u0441\u0435 \u0441\u0442\u0438\u043b\u0438 \u0441 \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u044f\u043c\u0438.<\/li>\n<\/ul>\n<p>  <\/p>\n<p><strong>\u041c\u0438\u043d\u0443\u0441\u044b \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u0439:<\/strong><\/p>\n<p>  <\/p>\n<ul>\n<li>\u0421\u043a\u043e\u0440\u0435\u0435 \u0432\u0441\u0435\u0433\u043e \u043e\u043d\u0438 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u043c\u0435\u0434\u043b\u0435\u043d\u043d\u0435\u0435 \u043a\u043e\u0434\u0430 \u043d\u0430 Python.<\/li>\n<li>\u041e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u043d\u044b\u0435 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u044f\u0437\u044b\u043a\u0430 \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u0439.<\/li>\n<\/ul>\n<p>  <\/p>\n<p><strong>\u041f\u043b\u044e\u0441\u044b Python:<\/strong><\/p>\n<p>  <\/p>\n<ul>\n<li>\u041f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u043f\u043e \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u044e \u0441 \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u044f\u043c\u0438 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0432 \u0440\u0430\u0437\u044b \u0432\u044b\u0448\u0435.<\/li>\n<li>\u041d\u0435\u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u043d\u044b\u0435 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 Python.<\/li>\n<\/ul>\n<p>  <\/p>\n<p><strong>\u041c\u0438\u043d\u0443\u0441\u044b Python:<\/strong><\/p>\n<p>  <\/p>\n<ul>\n<li>\u041d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0440\u0430\u0441\u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u044f\u0442\u044c \u0444\u0430\u0439\u043b(\u044b) *.py \u0432\u043c\u0435\u0441\u0442\u0435 \u0441 \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u043c.<\/li>\n<li>\u0411\u0435\u0437\u0433\u0440\u0430\u043d\u0438\u0447\u043d\u044b\u0435 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 Python \u043c\u043e\u0433\u0443\u0442 \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440 \u0433\u0435\u043e\u043c\u0435\u0442\u0440\u0438\u0439, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0431\u0443\u0434\u0435\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u043e\u0447\u0435\u043d\u044c \u0434\u043e\u043b\u0433\u043e.<\/li>\n<li>\u0415\u0441\u043b\u0438 \u0432\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0435 \u043c\u043e\u0434\u0443\u043b\u0438 Python, \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043d\u0435\u0442 \u0432 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u043e\u0439 \u043f\u043e\u0441\u0442\u0430\u0432\u043a\u0435, \u0442\u043e \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u044b \u0442\u0440\u0443\u0434\u043d\u043e\u0441\u0442\u0438 \u0441 \u0438\u0445 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u043e\u0439 \u043d\u0430 \u041f\u041a \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f (\u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e \u043d\u0430 Windows).<\/li>\n<\/ul>\n<p>  <\/p>\n<p>\u0412 \u0446\u0435\u043b\u043e\u043c \u043c\u043e\u0436\u043d\u043e \u0441\u043a\u0430\u0437\u0430\u0442\u044c, \u0447\u0442\u043e \u0432 \u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u0435 \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u0432 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0435\u0439 \u0438 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u0439 QGIS \u0434\u043b\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440\u0430 \u0433\u0435\u043e\u043c\u0435\u0442\u0440\u0438\u0438 \u0431\u043e\u043b\u0435\u0435 \u0447\u0435\u043c \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e. \u0412\u043e\u043f\u0440\u043e\u0441\u044b \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438, \u0435\u0441\u043b\u0438 \u043e\u043d\u0438 \u0432\u043e\u0437\u043d\u0438\u043a\u0430\u044e\u0442, \u043c\u043e\u0436\u043d\u043e \u0440\u0435\u0448\u0430\u0442\u044c, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u0435\u043c \u0432\u0438\u0434\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432 \u0432 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442 \u043c\u0430\u0441\u0448\u0442\u0430\u0431\u0430. \u041d\u043e \u0432 \u043a\u0430\u0436\u0434\u043e\u043c \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0432\u043e\u043f\u0440\u043e\u0441 \u043c\u043e\u0436\u043d\u043e \u0440\u0435\u0448\u0430\u0442\u044c \u043f\u043e \u0440\u0430\u0437\u043d\u043e\u043c\u0443, \u0432 \u0442\u043e\u043c \u0447\u0438\u0441\u043b\u0435 \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u044f \u00ab\u043c\u0438\u043a\u0441\u00bb \u0438\u0437 \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u0439 \u0438 Python.<\/p>\n<p>  <\/p>\n<h2 id=\"zaklyuchenie\">\u0417\u0430\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435<\/h2>\n<p>  <\/p>\n<p>\u0410 \u0447\u0442\u043e \u0435\u0441\u043b\u0438 \u0443\u0441\u043b\u043e\u0432\u043d\u044b\u0435 \u0437\u043d\u0430\u043a\u0438 \u0441\u043b\u043e\u0436\u043d\u0435\u0435? \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435.<\/p>\n<p>  <\/p>\n<p>\u0420\u0435\u0430\u043b\u044c\u043d\u044b\u0439 \u043a\u0435\u0439\u0441: \u0441\u0438\u0441\u0442\u0435\u043c\u0430 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442 \u0438\u0441\u0445\u043e\u0434\u043d\u043e\u0439 \u043c\u043e\u0434\u0435\u043b\u0438 WGS84 (\u0434\u043e\u043b\u0433\u043e\u0442\u0430\/\u0448\u0438\u0440\u043e\u0442\u0430), \u0435\u0434\u0438\u043d\u0438\u0446\u044b \u0438\u0437\u043c\u0435\u0440\u0435\u043d\u0438\u044f \u2014 \u0433\u0440\u0430\u0434\u0443\u0441\u044b. \u0412 \u0442\u0430\u043a\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0432\u0441\u0435 \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u044f, \u0432 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0434\u043b\u0438\u043d\u0430 \u0438\u043b\u0438 \u043f\u043b\u043e\u0449\u0430\u0434\u044c \u0441\u0442\u0430\u043d\u043e\u0432\u044f\u0442\u0441\u044f \u043d\u0435\u0442\u0440\u0438\u0432\u0438\u0430\u043b\u044c\u043d\u043e\u0439 \u0437\u0430\u0434\u0430\u0447\u0435\u0439, \u0442\u0430\u043a \u043a\u0430\u043a \u0434\u043b\u0438\u043d\u0430 \u043e\u0434\u043d\u043e\u0439 \u0443\u0433\u043b\u043e\u0432\u043e\u0439 \u0441\u0435\u043a\u0443\u043d\u0434\u044b \u043e\u0442\u043b\u0438\u0447\u0430\u0435\u0442\u0441\u044f \u043d\u0430 \u0440\u0430\u0437\u043d\u044b\u0445 \u0448\u0438\u0440\u043e\u0442\u0430\u0445. \u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f\u043c \u043d\u0435\u0443\u0434\u043e\u0431\u043d\u043e \u043e\u043f\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043a\u0432\u0430\u0434\u0440\u0430\u0442\u043d\u044b\u043c\u0438 \u0433\u0440\u0430\u0434\u0443\u0441\u0430\u043c\u0438 \u0438\u043b\u0438 \u0434\u043b\u0438\u043d\u043e\u0439 \u0432 \u0432\u0438\u0434\u0435 \u0433\u0440\u0430\u0434\u0443\u0441\u043e\u0432, \u0442\u0440\u0435\u0431\u0443\u044e\u0442\u0441\u044f \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u044f. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0431\u0443\u0444\u0435\u0440 \u0432 \u0433\u0440\u0430\u0434\u0443\u0441\u0430\u0445 \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0442\u0430\u043a:<\/p>\n<p>  <\/p>\n<p><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/h1\/i6\/jb\/h1i6jbxfnnvxd3und1nlso-ajjm.png\" alt=\"\u0411\u0443\u0444\u0435\u0440 \u0432 \u0433\u0440\u0430\u0434\u0443\u0441\u0430\u0445\"><\/p>\n<p>  <\/p>\n<p>\u0414\u0440\u0443\u0433\u043e\u0439 \u0440\u0435\u0430\u043b\u044c\u043d\u044b\u0439 \u043f\u0440\u0438\u043c\u0435\u0440: \u0433\u0435\u043e\u043c\u0435\u0442\u0440\u0438\u044f, \u0432\u044b\u0434\u0430\u0432\u0430\u0435\u043c\u0430\u044f \u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440\u043e\u043c, \u0432\u044b\u0445\u043e\u0434\u0438\u0442 \u0437\u0430 \u043f\u0440\u0435\u0434\u0435\u043b\u044b \u043e\u0431\u044a\u0435\u043a\u0442\u0430. \u0412 \u044d\u0442\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0432\u0441\u0435 \u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u0433\u043b\u044f\u0434\u0435\u0442\u044c \u043d\u0435\u043a\u0440\u0430\u0441\u0438\u0432\u043e, \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u043e\u0431\u0440\u0435\u0437\u0430\u0442\u044c \u0433\u0435\u043e\u043c\u0435\u0442\u0440\u0438\u044e \u043f\u043e \u0433\u0440\u0430\u043d\u0438\u0446\u0430\u043c. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 \u0432 \u0441\u043b\u043e\u0435 <strong>poly3<\/strong> \u043f\u043e\u043b\u0438\u0433\u043e\u043d \u0441 \u00ab\u0434\u044b\u0440\u043a\u043e\u0439\u00bb \u043c\u043e\u0436\u0435\u0442 \u0432\u044b\u0433\u043b\u044f\u0434\u0435\u0442\u044c \u0442\u0430\u043a:<\/p>\n<p>  <\/p>\n<p><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/fb\/ef\/qr\/fbefqrimeuzwhm3d5r3wn01gmri.png\" alt=\"\u041f\u043e\u043b\u0438\u0433\u043e\u043d \u0441 \u0434\u044b\u0440\u043a\u043e\u0439\"><\/p>\n<p>  <\/p>\n<p>\u042f\u0432\u043d\u043e \u043d\u0435 \u0442\u043e, \u0447\u0442\u043e \u0432\u044b \u0445\u043e\u0442\u0438\u0442\u0435 \u0443\u0432\u0438\u0434\u0435\u0442\u044c.<\/p>\n<p>  <\/p>\n<p>\u0410 \u0447\u0442\u043e \u0435\u0441\u043b\u0438 \u0432\u044b \u0445\u043e\u0442\u0438\u0442\u0435, \u0447\u0442\u043e\u0431\u044b \u0448\u0442\u0440\u0438\u0445\u043e\u0432\u043a\u0430 \u043f\u043e\u043b\u0438\u0433\u043e\u043d\u0430 \u0431\u044b\u043b\u0430 \u0432\u0441\u0435\u0433\u0434\u0430 \u043f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u044c\u043d\u0430 \u043e\u0434\u043d\u043e\u0439 \u0438\u0437 \u0435\u0433\u043e \u0441\u0442\u043e\u0440\u043e\u043d, \u043f\u0440\u0438 \u044d\u0442\u043e\u043c \u043c\u043e\u0434\u0435\u043b\u044c \u0443 \u0432\u0430\u0441 \u0441 \u0434\u043e\u043b\u0433\u043e\u0442\u043e\u0439\/\u0448\u0438\u0440\u043e\u0442\u043e\u0439? \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0447\u0442\u043e\u0431\u044b \u0432\u0441\u0435\u0433\u0434\u0430 \u0438 \u043f\u0440\u0438 \u043b\u044e\u0431\u044b\u0445 \u0443\u0441\u043b\u043e\u0432\u0438\u044f\u0445 \u0431\u044b\u043b\u043e \u0442\u0430\u043a:<\/p>\n<p>  <\/p>\n<p><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/_j\/dz\/gl\/_jdzglxcy8-9hhrx_i16hhjxequ.png\" alt=\"\u041f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u044c\u043d\u0430\u044f \u0448\u0442\u0440\u0438\u0445\u043e\u0432\u043a\u0430\"><\/p>\n<p>  <\/p>\n<p>\u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u0445\u043e\u0447\u0435\u0442 \u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u043d\u0430 \u043e\u0431\u044a\u0435\u043a\u0442\u044b \u0438 \u0432 \u00ab\u043f\u043b\u043e\u0441\u043a\u043e\u0439\u00bb \u043f\u0440\u043e\u0435\u043a\u0446\u0438\u0438 \u0438 \u0432\u043e\u043e\u0431\u0449\u0435 \u043a\u0430\u043a \u0443\u0433\u043e\u0434\u043d\u043e, \u043d\u043e \u0447\u0442\u043e\u0431\u044b \u0448\u0442\u0440\u0438\u0445\u043e\u0432\u043a\u0430 \u0431\u044b\u043b\u0430 \u0432\u0441\u0435\u0433\u0434\u0430 \u043f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u044c\u043d\u0430 \u043e\u0434\u043d\u043e\u0439 \u0438\u0437 \u0441\u0442\u043e\u0440\u043e\u043d? \u0411\u0435\u0437 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u0443\u0445\u0438\u0449\u0440\u0435\u043d\u0438\u0439, \u0441 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435\u043c \u0443\u0433\u043b\u0430 \u0432 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442 \u043f\u0440\u043e\u0435\u043a\u0446\u0438\u0438, \u043d\u0435 \u043e\u0431\u043e\u0439\u0442\u0438\u0441\u044c.<\/p>\n<p>  <\/p>\n<p>\u0410 \u043a\u0430\u043a \u043d\u0430\u0440\u0438\u0441\u043e\u0432\u0430\u0442\u044c <a href=\"https:\/\/hsto.org\/webt\/td\/vp\/_c\/tdvp_cxxniah6msvxpaomoe1h7y.png\" rel=\"nofollow\">\u00ab\u0437\u0443\u0431\u044b\u00bb<\/a>, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0431\u044b\u043b\u0438 \u0432 \u0441\u0430\u043c\u043e\u043c \u043d\u0430\u0447\u0430\u043b\u0435?<\/p>\n<p>  <\/p>\n<p>\u0412\u0441\u0435 \u044d\u0442\u0438, \u0430 \u0442\u0430\u043a\u0436\u0435 \u043c\u043d\u043e\u0433\u043e \u0434\u0440\u0443\u0433\u0438\u0445 \u0441\u043b\u043e\u0436\u043d\u044b\u0445 \u0441\u043b\u0443\u0447\u0430\u0435\u0432, \u043e\u0441\u0442\u0430\u043b\u0438\u0441\u044c \u0437\u0430 \u0440\u0430\u043c\u043a\u0430\u043c\u0438 \u0434\u0430\u043d\u043d\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0438. \u0412 \u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0435\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u044f \u043f\u043e\u0441\u0442\u0430\u0440\u0430\u043b\u0441\u044f \u043f\u0440\u043e\u0434\u0435\u043c\u043e\u043d\u0441\u0442\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440\u0430 \u0433\u0435\u043e\u043c\u0435\u0442\u0440\u0438\u0438, \u0430 \u0442\u0430\u043a\u0436\u0435 \u043f\u0440\u0438\u0432\u0435\u0441\u0442\u0438 \u0431\u0430\u0437\u043e\u0432\u044b\u0435 \u043f\u0440\u0438\u043c\u0435\u0440\u044b, \u0447\u0442\u043e\u0431\u044b \u0443 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u0441\u043b\u043e\u0436\u0438\u043b\u043e\u0441\u044c \u043f\u043e\u043d\u0438\u043c\u0430\u043d\u0438\u0435 \u0437\u0430\u0447\u0435\u043c \u0438 \u043a\u0430\u043a \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440\u044b \u0433\u0435\u043e\u043c\u0435\u0442\u0440\u0438\u0438.<\/p>\n<p>  <\/p>\n<p>\u0413\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440\u044b \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u044e\u0442 \u043f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0431\u0435\u0437\u0433\u0440\u0430\u043d\u0438\u0447\u043d\u044b\u0435 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438, \u0442\u043e\u0447\u043d\u0435\u0435 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u044b \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c\u044e, \u0438 \u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u043d\u0435\u0437\u0430\u043c\u0435\u043d\u0438\u043c\u044b\u043c \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u043c \u0434\u043b\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0441\u043b\u043e\u0436\u043d\u044b\u0445 \u0443\u0441\u043b\u043e\u0432\u043d\u044b\u0445 \u0437\u043d\u0430\u043a\u043e\u0432.<\/p>\n<p>  <\/p>\n<p>\u041d\u0430\u0434\u0435\u044e\u0441\u044c, \u0447\u0442\u043e \u0441\u0442\u0430\u0442\u044c\u044f \u043e\u043a\u0430\u0436\u0435\u0442\u0441\u044f \u043f\u043e\u043b\u0435\u0437\u043d\u043e\u0439, \u0430 \u0441\u043b\u043e\u0436\u043d\u044b\u0435 \u0441\u043b\u0443\u0447\u0430\u0438, \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e, \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u0432 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0439 \u0441\u0442\u0430\u0442\u044c\u0435. \u0421\u043f\u0430\u0441\u0438\u0431\u043e \u0437\u0430 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435.<\/p>\n<p>  <\/p>\n<h2 id=\"ssylki\">\u0421\u0441\u044b\u043b\u043a\u0438<\/h2>\n<p>  <\/p>\n<ul>\n<li><a href=\"https:\/\/anitagraser.com\/2017\/04\/08\/a-guide-to-geometry-generator-symbol-layers\/\" rel=\"nofollow\">Quick guide to geometry generator symbol layers<\/a><\/li>\n<li><a href=\"https:\/\/anitagraser.com\/2017\/04\/17\/better-river-styles-with-tapered-lines\/\" rel=\"nofollow\">Better river styles with tapered lines<\/a><\/li>\n<li><a href=\"https:\/\/polemic.nz\/2019\/11\/18\/foss4g-qgis-geometry-generators\/\" rel=\"nofollow\">FOSS4G \/ QGIS Geometry Generators<\/a><\/li>\n<li><a href=\"https:\/\/gitlab.com\/GIS-projects\/qgis-geometry-generator-examples\" rel=\"nofollow\">QGIS Geometry Generator examples<\/a><\/li>\n<li><a href=\"https:\/\/www.youtube.com\/channel\/UCxs7cfMwzgGZhtUuwhny4-Q\" rel=\"nofollow\">\u041a\u0430\u043d\u0430\u043b Klas Karlsson, \u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440\u044b \u0432 \u0432\u0438\u0434\u0435\u043e 0010 \u0438 0012<\/a><\/li>\n<li><a href=\"https:\/\/docs.qgis.org\/3.10\/en\/docs\/user_manual\/working_with_vector\/expression.html#vector-expressions\" rel=\"nofollow\">\u041e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u0430\u044f \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044f \u043f\u043e Expressions<\/a><\/li>\n<li><a href=\"https:\/\/docs.qgis.org\/3.10\/en\/docs\/pyqgis_developer_cookbook\/expressions.html?highlight=expressions\" rel=\"nofollow\">\u041e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u0430\u044f \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044f \u043f\u043e \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u044f\u043c \u0432 PyQGIS<\/a><\/li>\n<li><a href=\"https:\/\/github.com\/proway2\/QGIS-geometry-generator-examples\" rel=\"nofollow\">\u0420\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0439 \u0441 \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u043c \u0441 \u043f\u0440\u0438\u043c\u0435\u0440\u0430\u043c\u0438<\/a><\/li>\n<\/ul>\n<\/div>\n<p> \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"https:\/\/habr.com\/ru\/post\/504986\/\"> https:\/\/habr.com\/ru\/post\/504986\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"\n<div class=\"post__text post__text-html post__text_v1\" id=\"post-content-body\" data-io-article-url=\"https:\/\/habr.com\/ru\/post\/504986\/\">\n<p><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/070\/b4a\/b4d\/070b4ab4d68fa8fa7238acdc2d7567a0.jpg\"><br \/>  \u0422\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u044f \u0437\u0430\u043a\u0430\u0437\u0447\u0438\u043a\u0430 \u043a \u0443\u0441\u043b\u043e\u0432\u043d\u044b\u043c \u043e\u0431\u043e\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f\u043c \u043d\u0430 \u043a\u0430\u0440\u0442\u0430\u0445 \u043a\u0430\u0436\u0443\u0442\u0441\u044f \u0432\u0430\u043c \u043d\u0435\u0440\u0435\u0430\u043b\u044c\u043d\u044b\u043c\u0438? \u0414\u0430\u043b\u044c\u0448\u0435 \u0432\u044b \u0443\u0437\u043d\u0430\u0435\u0442\u0435, \u043a\u0430\u043a \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e geometry generator, QGIS \u0438 Python \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0442\u0430\u043a, \u0447\u0442\u043e\u0431\u044b \u0432\u0430\u0448\u0438 \u0443\u0441\u043b\u043e\u0432\u043d\u0438\u043a\u0438 \u0431\u044b\u043b\u0438 \u043b\u0443\u0447\u0448\u0435 \u0432\u0441\u0435\u0445.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-304723","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/304723","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=304723"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/304723\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=304723"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=304723"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=304723"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}