Maemo mapper и спутник с latlon.og
Oct. 12th, 2010 04:25 pm![[personal profile]](https://www.dreamwidth.org/img/silk/identity/user.png)
Если кому интересно, как подключить спутниковые карты РБ к maemo mapper, то Tile source должен иметь такие параметры:
URL:http://wms.latlon.org/?request=GetTile&layers=spot&x=%2$d&y=%3$d&z=%1$d
Image type: JPEG
Type: XYZ_INV
Прикол в следующем: для этого url формата нужен порядок параметров x,y,z. У маппера есть такой тип репозитория, НО у него для Z указывается такое число: zoom - (MAX_ZOOM - 16). А нам надо число, аналогичное openstreetmap (MAX_ZOOM + 1 - zoom) - которое там есть в формате XYZ_INV, но у этого формата порядок параметров z,x,y (как в урл для osm /%d/%d/%d.png). Поэтому, чтобы оно заработало - нужно поменять порядок параметров с помощью модификаторов в плейсхолдерах формата %n$d, где n - номер параметра в списке (начиная с единицы).
Пришлось курить исходники маппера и доку на printf.
PS: В maemo-mapper есть еще один шызо-хак. Не совсем понятно, есть ли он в новой версии, но в старых точно есть - при установке url, если оно обнаруживает %0d в формате, то ставит нужный тип репозитория сам. Поэтому можно в конец url дописать &fake=%0d что вызовет срабатывание хака и установку типа репы, если этой настройки нету в диалоге.
PPS: mappero в N900 - это версия 3.1, там все сделано культурно, с выбором типа репы. А более старые версии 2.х - там тип репы выбирается через шызохак:
maemo-mapper-2.6.2\src\maps.c,809
В общем, я сам похожую хуиту делал по молодости в оперденях и теперь мне очень стыдно.
PPPS: У меня очень тяжкие нелады с головой, в url же порядок параметров пофиг.
url: http://wms.latlon.org/?request=GetTile&layers=spot&z=%d&x=%d&y=%0d
URL:http://wms.latlon.org/?request=GetTile&layers=spot&x=%2$d&y=%3$d&z=%1$d
Image type: JPEG
Type: XYZ_INV
Прикол в следующем: для этого url формата нужен порядок параметров x,y,z. У маппера есть такой тип репозитория, НО у него для Z указывается такое число: zoom - (MAX_ZOOM - 16). А нам надо число, аналогичное openstreetmap (MAX_ZOOM + 1 - zoom) - которое там есть в формате XYZ_INV, но у этого формата порядок параметров z,x,y (как в урл для osm /%d/%d/%d.png). Поэтому, чтобы оно заработало - нужно поменять порядок параметров с помощью модификаторов в плейсхолдерах формата %n$d, где n - номер параметра в списке (начиная с единицы).
Пришлось курить исходники маппера и доку на printf.
PS: В maemo-mapper есть еще один шызо-хак. Не совсем понятно, есть ли он в новой версии, но в старых точно есть - при установке url, если оно обнаруживает %0d в формате, то ставит нужный тип репозитория сам. Поэтому можно в конец url дописать &fake=%0d что вызовет срабатывание хака и установку типа репы, если этой настройки нету в диалоге.
PPS: mappero в N900 - это версия 3.1, там все сделано культурно, с выбором типа репы. А более старые версии 2.х - там тип репы выбирается через шызохак:
maemo-mapper-2.6.2\src\maps.c,809
if(strstr(url, "service=wms")) repo->type = REPOTYPE_WMS; else if(strstr(url, "%s")) repo->type = REPOTYPE_QUAD_QRST; else if(strstr(url, "%0d")) repo->type = REPOTYPE_XYZ_INV; else if(strstr(url, "%-d")) repo->type = REPOTYPE_XYZ_SIGNED; else if(strstr(url, "%0s")) repo->type = REPOTYPE_QUAD_ZERO; else repo->type = REPOTYPE_XYZ;
В общем, я сам похожую хуиту делал по молодости в оперденях и теперь мне очень стыдно.
PPPS: У меня очень тяжкие нелады с головой, в url же порядок параметров пофиг.
url: http://wms.latlon.org/?request=GetTile&layers=spot&z=%d&x=%d&y=%0d
no subject
Date: 2010-10-12 04:51 pm (UTC)no subject
Date: 2010-10-12 04:55 pm (UTC)no subject
Date: 2010-10-12 05:02 pm (UTC)сервершкаф :)no subject
Date: 2010-10-12 05:08 pm (UTC)no subject
Date: 2010-10-12 05:18 pm (UTC)А с таким урлом как у тебя он пытается забрать что-то вроде этого
http://wms.latlon.org/?request=GetTile&layers=spot&x=10341&y=2&z=18905
и получает internal server error.
no subject
Date: 2010-10-12 05:42 pm (UTC)Там вообще-то экран с настройкой репы скроллироваться должен - типы и прочее внизу.
no subject
Date: 2010-10-12 05:54 pm (UTC)/var/lib/gconf/apps/maemo/maemo-mapper/\%gconf.xml
там есть ключик с tile source, внутри которого лежит xml
no subject
Date: 2010-10-12 06:15 pm (UTC)no subject
Date: 2010-10-12 06:19 pm (UTC)Кстати, в строке что ты привёл перед последней 1 $ или % ?
C $ вообще число не подставляется.
no subject
Date: 2010-10-12 06:20 pm (UTC)no subject
Date: 2010-10-12 06:21 pm (UTC)no subject
Date: 2010-10-12 06:25 pm (UTC)no subject
Date: 2010-10-12 06:46 pm (UTC)короче, дописывай в конец url &fake=%0d смотрим что получается, и ложим болтъ, если ничего.
no subject
Date: 2010-10-12 06:37 pm (UTC)оно ищет %0d, тогда ставит правильный тип репозитория.
допиши в конец url такое &fake=%0d (&fake=%0d, на случае если жж сожрет амперсанд)
no subject
Date: 2010-10-12 06:46 pm (UTC)Писал видимо аутичный гуру.
no subject
Date: 2010-10-12 06:47 pm (UTC)no subject
Date: 2010-10-12 06:52 pm (UTC)Лучше видно.
no subject
Date: 2010-10-12 06:55 pm (UTC)Оно бы ладно, если бы всё документировано было. А то пришлось исходники курить.
no subject
Date: 2010-10-12 07:00 pm (UTC)no subject
Date: 2010-10-12 08:36 pm (UTC)no subject
Date: 2010-10-12 08:40 pm (UTC)no subject
Date: 2010-10-12 08:43 pm (UTC)no subject
Date: 2010-10-12 08:50 pm (UTC)no subject
Date: 2010-10-12 08:38 pm (UTC)no subject
Date: 2010-10-12 08:40 pm (UTC)no subject
Date: 2010-10-12 08:43 pm (UTC)no subject
Date: 2010-10-12 10:39 pm (UTC)