You are not logged in.

#1851 2016-07-30 08:48:07

chnav
Member
From: Russia, mapping Kazakhstan
Registered: 2010-03-18
Posts: 3,262

Re: Обновление MapSurfer.NET

Самый простой способ для ОСМера начать использовать MapSurfer это, естественно, OSM XML или PBF в качестве провайдера данных. В комплекте с CartCSS у меня не получаются следующие вещи.

1. В стиле указываю фильтр для дорог

[highway='motorway'],
[highway='trunk'][motorroad='yes']
{}

Но так получилось что в обрезанном PBF нет ни одного элемента motorroad=yes, соответственно такого поля нет в данных. В результате стиль для всего слоя не обрабатывается, ничто не рендерится, пустой лист.

2. Мультиполигоны не обрабатываются совсем, словно нет такой геометрии.

Offline

#1852 2016-07-30 11:59:23

Runge
Member
Registered: 2009-10-02
Posts: 635
Website

Re: Обновление MapSurfer.NET

chnav wrote:

Самый простой способ для ОСМера начать использовать MapSurfer это, естественно, OSM XML или PBF в качестве провайдера данных. В комплекте с CartCSS у меня не получаются следующие вещи.

Абсолютно с этим согласен. Давайте вместе попробуем это исправить.

Для решения проблемы №1 есть идея. Эта идея заключается в дополнительном файле, в котором пользователь сможет указать список тегов, которыми будет дополяться провайдер данных OSM XML/PBF.

Проблема №2. Насколько я помню, то мультиполигоны должны поддерживаться. Мультиполигоны могут не отображаться в случае если они представлены в файле частично. Можно воспользоваться JOSM для загрузки недостающих частей мультиполигона.

Если Вы вышлите мне свой проект со стилями и исходными данными (с указанием идентификатора отсутствующего мультиполигона), то я смогу быстрее внести необходимые изменения в соответствующий провайдер данных.

Offline

#1853 2016-07-30 12:31:09

chnav
Member
From: Russia, mapping Kazakhstan
Registered: 2010-03-18
Posts: 3,262

Re: Обновление MapSurfer.NET

Runge wrote:

Для решения проблемы №1 есть идея. Эта идея заключается в дополнительном файле, в котором пользователь сможет указать список тегов, которыми будет дополяться провайдер данных OSM XML/PBF.

Мне кажется проще сделать условие при парсинге CSS: если key отсутствует в базе то любое выражение с ним сделать равносильным key = null

По проблемному мультиполигону выслал проект на почту. Спасибо.

Offline

#1854 2016-08-04 06:29:56

chnav
Member
From: Russia, mapping Kazakhstan
Registered: 2010-03-18
Posts: 3,262

Re: Обновление MapSurfer.NET

Runge

Ещё несколько вопросов, все относятся с CartoCSS + OSM XML|PBF

NOTE: я предполагаю что провайдер OSM сделан только для quick start и п.п. 1-4 реализуются запросами PostgreSQL+PostGIS, но вдруг это реализовано внутри MapSurfer, только не описано и нет примеров.

@issue 2016-08-04, 08:30

1. В провайдере данных OSM есть ли какое-то ключевое слово для выделения объектов определенного типа, например
node, way, relation
или node, входящий в relation и имеющий роль admin_center

2. Geometry Transformations
Есть ли реализация для CartoCSS или в провайдере данных OSM ?

3. Какие функции можно использовать в выражениях для значений параметров, кроме тех что указаны в списке http://mapsurfernet.com/docs/usermanual … ions/index ? (экспоненты, возведение в степень и т.д.)

4. Есть ли функции (для CartoCSS), параметром для которых является текущая геометрия, например изменить размер шрифта в зависимости от площади ?


5. И последнее очень важный момент непосредственно по _переменным_ CartoCSS.
Исходя из всех просмотренных примеров - основной стиль мапника, veloroad, osm-bright и т.д. - переменные (variable @var) это не совсем переменные, скорее constant или define для подстановки. Тем не менее они не работают в качестве параметров фильтров, например такое определение не дает синтаксических ошибок, но слой не рисуется

@zoom_mid: 12;

//#highway[zoom >= 12] {  // OK
#highway[zoom >= @zoom_mid] {  // No errors but not rendered
  line-width: 1.0;
}

Схожая проблема кажется была решена в TileMill https://github.com/mapbox/carto/issues/197 и https://github.com/mapbox/carto/issues/337

Спасибо.

Last edited by chnav (2016-08-04 13:39:15)

Offline

#1855 2016-08-04 08:24:17

chnav
Member
From: Russia, mapping Kazakhstan
Registered: 2010-03-18
Posts: 3,262

Re: Обновление MapSurfer.NET

@issue 2016-08-04, 10:20

Сконфигурировал IIS сервис строго как описано в инструкции http://mapsurfernet.com/docs/usermanual … sing-iis75
но указал стиль CartoCSS. В броузере при вызове url http://localhost:8001/tms.ashx?x=0&y=0&z=0 вылетает ошибка

Server Error in '/' Application.
Unable to find an suitable FileType`1 to load file 'D:\Projects\MapSurfer.NET\OSM_Topo\osm_topo.mml'.
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.

Exception Details: System.Exception: Unable to find an suitable FileType`1 to load file 'D:\Projects\MapSurfer.NET\OSM_Topo\osm_topo.mml'.

Source Error:
An unhandled exception was generated during the execution of the current web request. Information regarding the origin and location of the exception can be identified using the exception stack trace below.


Stack Trace:

[Exception: Unable to find an suitable FileType`1 to load file 'D:\Projects\MapSurfer.NET\OSM_Topo\osm_topo.mml'.]
   MapSurfer.Web.Hosting.AbstractMapService.Load() +367
   MapSurfer.Web.Hosting.AspNet.Global.CreateMapService() +54
   MapSurfer.Web.Hosting.AspNet.Global.Application_Start(Object sender, EventArgs e) +5

[HttpException (0x80004005): Unable to find an suitable FileType`1 to load file 'D:\Projects\MapSurfer.NET\OSM_Topo\osm_topo.mml'.]
   System.Web.HttpApplicationFactory.EnsureAppStartCalledForIntegratedMode(HttpContext context, HttpApplication app) +9966013
   System.Web.HttpApplication.RegisterEventSubscriptionsWithIIS(IntPtr appContext, HttpContext context, MethodInfo[] handlers) +118
   System.Web.HttpApplication.InitSpecial(HttpApplicationState state, MethodInfo[] handlers, IntPtr appContext, HttpContext context) +172
   System.Web.HttpApplicationFactory.GetSpecialApplicationInstance(IntPtr appContext, HttpContext context) +352
   System.Web.Hosting.PipelineRuntime.InitializeApplication(IntPtr appContext) +296

[HttpException (0x80004005): Unable to find an suitable FileType`1 to load file 'D:\Projects\MapSurfer.NET\OSM_Topo\osm_topo.mml'.]
   System.Web.HttpRuntime.FirstRequestInit(HttpContext context) +9947380
   System.Web.HttpRuntime.EnsureFirstRequestInit(HttpContext context) +101
   System.Web.HttpRuntime.ProcessRequestNotificationPrivate(IIS7WorkerRequest wr, HttpContext context) +261

Last edited by chnav (2016-08-04 13:38:51)

Offline

#1856 2016-08-04 13:36:26

chnav
Member
From: Russia, mapping Kazakhstan
Registered: 2010-03-18
Posts: 3,262

Re: Обновление MapSurfer.NET

@issue 2016-08-04, 15:30

Использование плоских проекций.

Попытался сменить тип проекции в настройках проекта, т.е. рендерить тайлы не в дефолтном меркаторе, а, например Lambert Conical. В настройках проекта (файл mml) звменил строку на

"srs": "+proj=lcc  +a=6378137 +b=6378137 +lat_1=38.0 +lat_2=49.0 +lat_0=38 +lon_0=52.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over"

При открытии проекта выскакивает исключение. Индексы у данных удалял, не помогает.

Вопрос: поддерживаются ли проекции PROJ4 и кастомные через строку как выше, или только гугломеркатор ? Имеются в виду не провайдеры данных (там богатый выбор проекций) а именно о рендере, тайлах для slippy map.

Last edited by chnav (2016-08-04 13:38:40)

Offline

#1857 2016-08-04 13:55:27

Sergey Astakhov
Member
From: St.Petersburg, Russia
Registered: 2009-11-13
Posts: 5,779

Re: Обновление MapSurfer.NET

chnav wrote:

тайлах для slippy map.

Обычно тайлы для slippy map определены для гугломеркатора.
Другие проекции возможны, но требуют как минимум соответствующей настройки на стороне тайлового сервиса и на клиенте.

Offline

#1858 2016-08-04 14:07:34

Runge
Member
Registered: 2009-10-02
Posts: 635
Website

Re: Обновление MapSurfer.NET

chnav

У вас накопилось довольно много вопросов. Давайте разберем их по порядку.

Пост №1

1. В провайдере данных OSM есть ли какое-то ключевое слово для выделения объектов определенного типа, например
node, way, relation
или node, входящий в relation и имеющий роль admin_center

Понятия node, way, relation в Мапсерфере нет. Исключительно ОСМовские типы данных конвертируются в геометрические объекты типа Point, Linestring, Polygon и т.д. Реализация CartoCSS совместима с той, что определена в Tilemill, поэтому присутствует возможность фильтровать данные по типу используя мапниковский синтаксис
['mapnik::geometry_type' = 1]

2. Geometry Transformations
Есть ли реализация для CartoCSS или в провайдере данных OSM ?

В настоящий момент реализованна поддержка только тех геометрических преобразований, которые определены в спецификации CartoCSS, т.е. line-simplify, polygon-simplify, line-offset и т.д.
В следующей версии Мапрсерфера появится возможность определять геом. преобразования через line-geometry-transformation: "GeometryTransformations.MBRLongestAxis([geom_field])" с любым уровнем вложенности.


3. Какие функции можно использовать в выражениях для значений параметров, кроме тех что указаны в списке http://mapsurfernet.com/docs/usermanual … ions/index ? (экспоненты, возведение в степень и т.д.)

На сегодняшний день, в фильтрах CartoCSS выражения поддерживаются довольно скудно. Однако, значения текстового поля могут задаваться используя синтаксис указанный на приведенной вами странице.
Расширение возможностей фильтров, например ["Math.Abs([fieldName])" > 0] будет добавлено в следующем релизе.

В выражениях можно использовать любую статическую функцию статического класса приведенного на указанной вами странице.  Например https://msdn.microsoft.com/en-us//libra … .110).aspx
(экспоненты, возведение в степень и т.д.) -> Math.Sin(0.5)

4. Есть ли функции (для CartoCSS), параметром для которых является текущая геометрия, например изменить размер шрифта в зависимости от площади ?

Такой функции пока нет, но она появится. Это можно будет сделать примерно так
#landuse["GeometryTransformations.ViewTransformation([_geom_], [ViewTransformation]).Area" > 2000] 
{
   text-size: 12;
}

или используя площадь объекта в метрах
#landuse["[_geom_].Area" > 2000000] 
{
   text-size: 12;
}

5. И последнее очень важный момент непосредственно по _переменным_ CartoCSS.
Исходя из всех просмотренных примеров - основной стиль мапника, veloroad, osm-bright и т.д. - переменные (variable @var) это не совсем переменные, скорее constant или define для подстановки. Тем не менее они не работают в качестве параметров фильтров, например такое определение не дает синтаксических ошибок, но слой не рисуется

В том билде, что доступен сейчас для скачивания этой возможности нет.

Попробуйте установить следующий билд https://drive.google.com/file/d/0BwKq40 … sp=sharing
В нем добавлена возможность использования определеных констант в фильтрах.


Пост №2

Сконфигурировал IIS сервис строго как описано в инструкции http://mapsurfernet.com/docs/usermanual … sing-iis75
но указал стиль CartoCSS. В броузере при вызове url http://localhost:8001/tms.ashx?x=0&y=0&z=0 вылетает ошибка

В указанном выше билде эта ошибка устранена.

Last edited by Runge (2016-08-04 14:26:09)

Offline

#1859 2016-08-04 14:24:31

chnav
Member
From: Russia, mapping Kazakhstan
Registered: 2010-03-18
Posts: 3,262

Re: Обновление MapSurfer.NET

Runge wrote:

Попробуйте установить следующий билд https://drive.google.com/file/d/0BwKq40 … sp=sharing
В нем добавлена возможность использования определеных констант в фильтрах.

Спасибо за быструю реализацию, работает ! Остальное ещё не проверял.

Offline

#1860 2016-08-06 05:44:43

chnav
Member
From: Russia, mapping Kazakhstan
Registered: 2010-03-18
Posts: 3,262

Re: Обновление MapSurfer.NET

@issue 2016-08-06, 07:30

При оформлении текста (проверено для point и line) выяснилось следующее поведение параметра text-dy: положительные значения двигают текст вниз от точки или линии, отрицательные - вверх. Т.е. система координат экранная, не мировая.

Не уверен как ведет себя мапник в такой ситуации, в примерах tilemill смещает текст "положительно = вверх" https://www.mapbox.com/tilemill/docs/gu … ng-labels/

В любом случае желательно такое же соглашение по направлению осей как у мапника, а мы подстроимся ))

Offline

#1861 2016-08-06 09:08:13

Runge
Member
Registered: 2009-10-02
Posts: 635
Website

Re: Обновление MapSurfer.NET

Спасибо, chnav!

Ваши замечания постараюсь учесть.

Offline

#1862 2016-08-06 11:23:20

freeExec
Moderator
From: Ульяновск,Модератор всех слоёв
Registered: 2012-07-31
Posts: 8,452

Re: Обновление MapSurfer.NET

Вроде бы это смещение зависит от направлении линии, т.е. если смотреть по направлению, то положительная часть будет справа.

Offline

#1863 2016-08-06 16:01:58

chnav
Member
From: Russia, mapping Kazakhstan
Registered: 2010-03-18
Posts: 3,262

Re: Обновление MapSurfer.NET

freeExec wrote:

Вроде бы это смещение зависит от направлении линии, т.е. если смотреть по направлению, то положительная часть будет справа.

Интересное наблюдение, перечитал инструкцию, оказывается поведение описано для разных случав.

text-dx
Displace text by fixed amount, in pixels, +/- along the X axis. With "dummy" placement-type, a positive value displaces to the right. With "simple" placement-type, it is either left, right or unchanged, depending on the placement selected. Any non-zero value implies "horizontal-alignment" changes to "left" by default. Has no effect with 'line' text-placement-type.

text-dy
Displace text by fixed amount, in pixels, +/- along the Y axis. With "dummy" placement-type, a positive value displaces downwards. With "simple" placement-type, it is either up, down or unchanged, depending on the placement selected. With "line" placement-type, a positive value displaces above the path.

Последнее замечание имо следует уточнить т.к. забыт text-upright (который может перевернуть текст на 180 градусов!!!) и видимо допущена опечатка в указании параметра (у placement-type нет значений line), т.е. перефразировать:
With "line" text-placement placement-type, a positive _text-dy_ value displaces text in its up direction. Иначе говоря подпись должна касаться линии своей нижней частью вне зависимости от выбранного (автоматически) направления.

Last edited by chnav (2016-08-06 16:10:36)

Offline

#1864 2016-08-09 09:44:33

chnav
Member
From: Russia, mapping Kazakhstan
Registered: 2010-03-18
Posts: 3,262

Re: Обновление MapSurfer.NET

issue 2016-08-09 11:30

Не работают назначения текста-константы

[surface="asphalt"] { text-name: "'асфальт'"; }
[surface="asphalt"] { text-name: 'асфальт'; }

Пробовал все сочетания кавычек, включая сдвоенные, как описано тут https://www.mapbox.com/tilemill/docs/gu … ng-labels/

You can also assign arbitrary text to labels that does not come from a data field. Due to a backwards-compatibility issue, you will need to quote such text twice for this to work correctly.
#parks {
  text-name: "'Park'";
  text-face-name: 'Droid Sans Regular';
}

Offline

#1865 2016-08-10 14:40:47

Runge
Member
Registered: 2009-10-02
Posts: 635
Website

Re: Обновление MapSurfer.NET

chnav wrote:

Не работают назначения текста-константы.

Спасибо за багрепорт. Указанную ошибку уже устранил. Новую версию можно скачать с сайта или воспользоваться функцией автоматического обновления в MapSurfer.NET Studio.

Offline

#1866 2016-08-10 14:54:17

chnav
Member
From: Russia, mapping Kazakhstan
Registered: 2010-03-18
Posts: 3,262

Re: Обновление MapSurfer.NET

Runge
Ещё такой вопрос, понимаю что регулярные выражения сами по себе работают медленно, но вот такая конструкция в фильтрах у меня конкретно тормозит ))

[surface!=null][smoothness!=null][surface=~"^(asphalt|concrete|compacted|fine_gravel|gravel|stone|pebblestone|paved|concrete:plates|^paving_stones.*)$"][smoothness=~"^(horrible|very_horrible|impassable)$"][highway=~"^(motorway_link|trunk|trunk_link|primary|primary_link|secondary|secondary_link|tertiary|tertiary_link|unclassified|residential|living_street|pedestrian)$"]

Я что-то могу поправить, или выход только - разворачивать в фильтры без regexp ?

Last edited by chnav (2016-08-10 15:17:46)

Offline

#1867 2016-08-11 07:33:17

Runge
Member
Registered: 2009-10-02
Posts: 635
Website

Re: Обновление MapSurfer.NET

chnav wrote:

Ещё такой вопрос, понимаю что регулярные выражения сами по себе работают медленно, но вот такая конструкция в фильтрах у меня конкретно тормозит )).

А насколько велика выборка из данных? Интересует количество фильтрируемых объектов. Эту статистику можно глянуть в панели "Статистика рендеринга".

Вы можете выслать пример вашего проекта, тогда я смогу разобраться в этой проблеме более углубленно.

chnav wrote:

Я что-то могу поправить, или выход только - разворачивать в фильтры без regexp?

Есть одна идейка, но для этого мне нужен пример из вашего проекта. Не хочется тратить время на создание проекта самому.

Offline

#1868 2016-08-17 07:33:36

chnav
Member
From: Russia, mapping Kazakhstan
Registered: 2010-03-18
Posts: 3,262

Re: Обновление MapSurfer.NET

issue 2016-08-17 15:21 MSK

Runge
У меня не получается задавать толщину линий line-width меньше 1.0.

Меняю значения от 0.4 до 1.0 - линия выглядит одинаковой, чуть превысив значение например до 1.1 - толщина начинает меняться. Это ограничения редактора стиля и GDI, или внутренние проверки отрубают значения < 1 ?


(added)
Обнаружил такое поведение

[highway="track"] {
	line-color: black;
	line-width: 0.4;                        // в Studio рендерится ширина 0.4 пикселя
//	line-dasharray: 12.0, 2.0;
}
[highway="track"] {
	line-color: black;
	line-width: 0.4;                        // в Studio рендерится ширина 1 пиксель
	line-dasharray: 12.0, 2.0;
}

Last edited by chnav (2016-08-18 03:02:58)

Offline

#1869 2016-08-30 19:32:58

Runge
Member
Registered: 2009-10-02
Posts: 635
Website

Re: Обновление MapSurfer.NET

chnav wrote:

У меня не получается задавать толщину линий line-width меньше 1.0.

Меняю значения от 0.4 до 1.0 - линия выглядит одинаковой, чуть превысив значение например до 1.1 - толщина начинает меняться. Это ограничения редактора стиля и GDI, или внутренние проверки отрубают значения < 1 ?

Вы правы, библиотека GDI не умеет рисовать линии тоньше 1 пикселя. Это относится и к сплошным и к штрихпунктирным линиям. Однако, в Мапсерфере имеется обходной вариант, который с помощью библиотеки Fog позволяет рисовать сплошные линии толщиной меньше 1. Связка GDI+Fog реализована в рендерере GDI.
Для корректной работы с тонкими линиями я советую попробовать рендерер Cairo. Его можно активировать в свойствах проекта. Но для этого вам понадобится новая сборка Мапсерфера, ссылку на которую я вышлю отдельно в письме.

Last edited by Runge (2016-08-30 19:34:49)

Offline

#1870 2016-08-31 12:55:14

Ilis
Member
From: Екатеринбург
Registered: 2009-05-24
Posts: 5,970

Re: Обновление MapSurfer.NET

Постоянно пропадают куски 3Д-домиков: http://openstreetmap.ru/#map=17/56.7956 … 75&layer=S

Offline

#1871 2016-08-31 14:04:29

Владимир К
Member
Registered: 2015-05-22
Posts: 455

Re: Обновление MapSurfer.NET

не обязательно куски и не обязательно 3д http://openstreetmap.ru/#map=16/55.7595/37.5942&layer=S

Offline

#1872 2016-09-01 05:47:09

NetWormKido
Member
From: Chapaevsk@63RUS
Registered: 2011-11-22
Posts: 1,000

Re: Обновление MapSurfer.NET

Увы Мапсёрфер совсем не юзабельный, больше года не рендерятся огромные куски карты.

Offline

#1873 2016-09-01 11:10:46

LLlypuk82
Member
Registered: 2012-12-23
Posts: 2,512
Website

Re: Обновление MapSurfer.NET

NetWormKido wrote:

Увы Мапсёрфер совсем не юзабельный, больше года не рендерятся огромные куски карты.

Что есть — то есть, запущен (в плохом смысле слова), к сожалению.

Offline

#1874 2016-09-06 05:54:40

lenux
Member
Registered: 2011-12-06
Posts: 666

Re: Обновление MapSurfer.NET

Runge когда можно будет ожидать нормальную работу рендера?

Offline

#1875 2016-09-25 12:52:06

firsovil10
Member
Registered: 2014-05-04
Posts: 31

Re: Обновление MapSurfer.NET

Mapsurfer Studio последней версии отказывается ставиться, т.к. инсталлятор пытается скачать VC++ 2015 Update 3 по «мёртвой» ссылке с сайта Microsoft, натыкается на 404-ю ошибку и прекращает процесс. Ручная установка VC++ по актуальной ссылке ничего не меняет. Пора бы обновить инсталлятор

Last edited by firsovil10 (2016-09-25 12:52:33)

Offline

Board footer

Powered by FluxBB