SASGIS

Веб-картография и навигация

Два типа тайлов в одной карте

программа для загрузки и просмотра спутниковых снимков Земли, Луны, Марса предоставленных сервисами Google Maps и Космоснимки. Возможность работы с GPS приёмником.

Модератор: Tolik

Два типа тайлов в одной карте

Сообщение Parasite » 20 авг 2011, 19:33

Что-то я вроде туплю, но как качать карты которые содержат два типа тайлов в одной карте?
Например банальный Ландшафт Гугл: там есть и JPG и PNG, причем рядом:
JPG
Изображение
И тут же соседний с ним - PNG (в данном случае - серый квадрат, но не суть важно - важно то что это PNG рядом с JPG'ом, и от запроса клиента тип отдаваемых данных не зависит):
Изображение
Вот мой params.txt:
Код: Выделить всё
[PARAMS]
pnum=1
GUID={F26E37ED-923B-42E7-8BA6-CC0CC3213B93}
asLayer=0
name=Land (Google)
name_en=Land (Google)
name_uk=Land (Google)
ParentSubMenu=Google
ParentSubMenu_en=Google
ParentSubMenu_uk=Google
NameInCache=Land
DefURLBase=http://mt0.google.com/vt/lyrs=t&hl=ru
ContentType=image/png,image/jpeg,image/jpg
Ext=.jpg
projection=1
sradiusa=6378137
sradiusb=6378137
separator=0
UseDwn=1
Usestick=1
UseGenPrevious=0
Usedel=1
Usesave=1
UsePreloadPage=1
Sleep=1000
DefHotKey=72

Оба типа тайлов при этих настройках - качаются ОК, но в кэш кладутся как ОДИН тип (при настройках выше - как .jpg). При этом получаем PNG переименованные в .jpg, и соответственно "Тайл испорчен!" при просмотре из кэша.

Вроде бы у САСа когда-то давно была фича перекодирования тайлов перед покладанием в кэш, не?
The only difference between me and a mad man is that I am not mad. /Salvador Dali/
Изображение
Аватара пользователя
Parasite
Администратор
 
Сообщения: 5646
Зарегистрирован: 23 окт 2008, 17:38
Благодарил (а): 124 раз.
Поблагодарили: 460 раз.

Re: Два типа тайлов в одной карте

Сообщение Tolik » 20 авг 2011, 20:55

А в этом случае тайлы перекодируются в png:
VEMap.Bing.zmp
Там на некоторых зумах приходят jpeg, на некоторых png, в кэше все png, проблемы нет.
Код: Выделить всё
[PARAMS]
pnum=10
GUID={E47F6EE4-BC40-422E-85BB-4A57C4E49175}
name=Карта (Bing Maps)
name_en=Map (Bing Maps)
name_uk=Карта (Bing Maps)
ParentSubMenu=Bing (Virtual Earth)
ParentSubMenu_en=Bing (Virtual Earth)
ParentSubMenu_uk=Bing (Virtual Earth)
asLayer=0
DefURLBase=http://ecn.t0.tiles.virtualearth.net/tiles/r
projection=1
sradiusa=6378137
sradiusb=6378137
NameInCache=vemap-b
separator=0
Ext=.png
UseDwn=1
Usestick=1
UseGenPrevious=1
Usedel=1
Usesave=1
UseAntiBan=0
Sleep=0
DefHotKey=16470
ContentType=image/jpeg;image/png
BanIfLen=0
Tolik
Гуру
 
Сообщения: 2603
Зарегистрирован: 28 янв 2011, 10:38
Благодарил (а): 278 раз.
Поблагодарили: 515 раз.

Re: Два типа тайлов в одной карте

Сообщение Parasite » 20 авг 2011, 21:11

Tolik писал(а):А в этом случае тайлы перекодируются в png:
Там на некоторых зумах приходят jpeg, на некоторых png, в кэше все png, проблемы нет.

Вот я про эту фичу и имел ввиду.
А почему у меня не перекодируются? Визуальных отличий двух params.txt - в "image/jpeg;image/png" в бинге и в "image/png,image/jpeg,image/jpg" у меня. Причем в wikimap.zmp (откуда я строчку и скопипастил) они таки через запятую.
Сейчас попробую через ";"...

UPD: не, не канает. ВСЕ тайлы качаются и кладутся в кэш с расширением .jpg, но те которые качались как PNG - так внутри и остаются PNG и с тем же PNGшным размером в байтах (несмотря на то что у них в кэше уже расширение .jpg).
То есть идет не перекодирование контента, а тупо переименование...

UPD2:
Залез токи в сниффер. Вот ЖПЕговый запрос\ответ:
Код: Выделить всё
GET /vt/lyrs=t&hl=ru&x=24&y=22&zoom=11&s=Gal HTTP/1.1
User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 2.0.50727)
Host: mt0.google.com
Pragma: no-cache
Cookie: PREF=ID=ce13d9b0466f4e82:U=841cd696def0040e:TM=1240495121:LM=1306948823:S=GA_DSka4_AKxggys; NID=47=AztF8x_MxneU_mJP9TF2bj1s1k-OiGdnirsmKqyMO_H7mksuSv2Qw2Yn_yYMAX8d02SaX9bln7bSoPcBiY3sP_GhxgpX9C39bvQcjNRWllLMC-ILEYmiHMLX_W-MCzw8

HTTP/1.1 200 OK
Date: Sat, 20 Aug 2011 17:42:15 GMT
Expires: Sat, 20 Aug 2011 17:42:15 GMT
Cache-Control: private, max-age=3600
Access-Control-Allow-Origin: *
Content-Type: image/jpeg
X-Content-Type-Options: nosniff
Server: maptiles-versatile
Content-Length: 2092
X-XSS-Protection: 1; mode=block

......JFIF.............;CREATOR: gd-jpeg v1.0 (using IJG JPEG v62), quality = 90
...C......................
.....
...

А вот PNGшный:
Код: Выделить всё
GET /vt/lyrs=t&hl=ru&x=24&y=21&zoom=11&s=Galil HTTP/1.1
User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 2.0.50727)
Host: mt0.google.com
Pragma: no-cache
Cookie: PREF=ID=ce13d9b0466f4e82:U=841cd696def0040e:TM=1240495121:LM=1306948823:S=GA_DSka4_AKxggys; NID=47=AztF8x_MxneU_mJP9TF2bj1s1k-OiGdnirsmKqyMO_H7mksuSv2Qw2Yn_yYMAX8d02SaX9bln7bSoPcBiY3sP_GhxgpX9C39bvQcjNRWllLMC-ILEYmiHMLX_W-MCzw8

HTTP/1.1 200 OK
Date: Sat, 20 Aug 2011 17:42:05 GMT
Expires: Sat, 20 Aug 2011 17:42:05 GMT
Cache-Control: private, max-age=3600
Access-Control-Allow-Origin: *
Content-Type: image/jpeg
X-Content-Type-Options: nosniff
Server: maptiles-versatile
Content-Length: 103
X-XSS-Protection: 1; mode=block

.PNG
.
...
IHDR.............f.:%....PLTE...........IDATh....
......Om.7..........
!...........IEND.B`.

Очевидно, что под одинаковыми хидерами приходит разный контент. Опять же понятно, почему в САСе не срабатывает перекодировка - хидеры в обоих случаях ЖПЕговые, и тут уже надо смотреть в контент+сигнатуры каждого тайла, а не только в хидеры....Гугл как всегда - жжот.

Ушел писать прокси-скриптик. :x
The only difference between me and a mad man is that I am not mad. /Salvador Dali/
Изображение
Аватара пользователя
Parasite
Администратор
 
Сообщения: 5646
Зарегистрирован: 23 окт 2008, 17:38
Благодарил (а): 124 раз.
Поблагодарили: 460 раз.

Re: Два типа тайлов в одной карте

Сообщение vasketsov » 20 авг 2011, 23:27

А через Accept в хедерах нельзя указать принимать только определённый тип, чтобы сервер сам кодировал при отдаче, как если бы 'Accept-Encoding' => 'gzip, deflate' ?
vasketsov
Специалист
 
Сообщения: 901
Зарегистрирован: 25 июл 2009, 21:15
Благодарил (а): 0 раз.
Поблагодарили: 193 раз.

Re: Два типа тайлов в одной карте

Сообщение Parasite » 20 авг 2011, 23:38

vasketsov писал(а):А через Accept в хедерах нельзя указать принимать только определённый тип, чтобы сервер сам кодировал при отдаче, как если бы 'Accept-Encoding' => 'gzip, deflate' ?

Вряд ли - гугль обычно плохо слушает то что ему говорят клиенты (бо проблемы нигров шерифа не волнуют, как известно). Проверять уже лениво - я уже отдаю Content-Type: image/jpeg если в боди найдена сигнатура "JFIF" + image/png если найдена сигнатура "PNG" (ну и до кучи - die если найден "<html", то есть бан :) )
The only difference between me and a mad man is that I am not mad. /Salvador Dali/
Изображение
Аватара пользователя
Parasite
Администратор
 
Сообщения: 5646
Зарегистрирован: 23 окт 2008, 17:38
Благодарил (а): 124 раз.
Поблагодарили: 460 раз.

Re: Два типа тайлов в одной карте

Сообщение Parasite » 21 авг 2011, 10:08

vasketsov писал(а):А через Accept в хедерах нельзя указать принимать только определённый тип, чтобы сервер сам кодировал при отдаче, как если бы 'Accept-Encoding' => 'gzip, deflate' ?

А таки перепроверил этот вариант:
Код: Выделить всё
GET /vt/lyrs=t&hl=ru&x=24&y=21&zoom=11&s=Galile HTTP/1.1
Accept: image/jpg
User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 2.0.50727)
Host: mt0.google.com
Pragma: no-cache

HTTP/1.1 200 OK
Date: Sun, 21 Aug 2011 06:00:39 GMT
Expires: Sun, 21 Aug 2011 06:00:39 GMT
Cache-Control: private, max-age=3600
Access-Control-Allow-Origin: *
Content-Type: image/jpeg
X-Content-Type-Options: nosniff
Server: maptiles-versatile
Content-Length: 103
X-XSS-Protection: 1; mode=block

.PNG
.
...
IHDR.............f.:%....PLTE...........IDATh....
......Om.7..........
!...........IEND.B`.

GET /vt/lyrs=t&hl=ru&x=25&y=21&zoom=11&s=Gal HTTP/1.1
Accept: image/jpg
User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 2.0.50727)
Host: mt0.google.com
Pragma: no-cache

HTTP/1.1 200 OK
Date: Sun, 21 Aug 2011 06:00:46 GMT
Expires: Sun, 21 Aug 2011 06:00:46 GMT
Cache-Control: private, max-age=3600
Access-Control-Allow-Origin: *
Content-Type: image/jpeg
X-Content-Type-Options: nosniff
Server: maptiles-versatile
Content-Length: 103
X-XSS-Protection: 1; mode=block

.PNG
.
...
IHDR.............f.:%....PLTE...........IDATh....
......Om.7..........
!...........IEND.B`.

GET /vt/lyrs=t&hl=ru&x=25&y=22&zoom=11&s=G HTTP/1.1
Accept: image/jpg
User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 2.0.50727)
Host: mt0.google.com
Pragma: no-cache

HTTP/1.1 200 OK
Date: Sun, 21 Aug 2011 06:00:49 GMT
Expires: Sun, 21 Aug 2011 06:00:49 GMT
Cache-Control: private, max-age=3600
Access-Control-Allow-Origin: *
Content-Type: image/jpeg
X-Content-Type-Options: nosniff
Server: maptiles-versatile
Content-Length: 103
X-XSS-Protection: 1; mode=block

.PNG
.
...
IHDR.............f.:%....PLTE...........IDATh....
......Om.7..........
!...........IEND.B`.

...что и требовалось доказать. :x
The only difference between me and a mad man is that I am not mad. /Salvador Dali/
Изображение
Аватара пользователя
Parasite
Администратор
 
Сообщения: 5646
Зарегистрирован: 23 окт 2008, 17:38
Благодарил (а): 124 раз.
Поблагодарили: 460 раз.

Re: Два типа тайлов в одной карте

Сообщение zOn » 23 авг 2011, 16:01

Так если от гугла всё приходит с хидером jpg, а по сути там и jpg и png, то что бы запустить механизм перекодирования САС надо назначить тип файла отличный от хидера?
Я правильно понял? так может в кэш всё сохранять в png если не принципиально jpg? то что работает с вики, как писал Tolik.
Или я не в теме?
zOn
Советчик
 
Сообщения: 254
Зарегистрирован: 03 фев 2009, 01:05
Благодарил (а): 25 раз.
Поблагодарили: 16 раз.

Re: Два типа тайлов в одной карте

Сообщение Parasite » 23 авг 2011, 22:11

zOn писал(а):Так если от гугла всё приходит с хидером jpg, а по сути там и jpg и png, то что бы запустить механизм перекодирования САС надо назначить тип файла отличный от хидера?

Именно. Перекодировка в САСе судя по всему включается по разным хидерам - а в данном конкретном случае хидеры одинаковы: IMAGE/JPEG. Гугл жжот, а САС не смотрит в контент (как современные браузеры) а смотрит только в хидеры. :(
В итоге в браузерах всё ОК, а в САСе - нет.

zOn писал(а):так может в кэш всё сохранять в png если не принципиально jpg?

Тогда придется конвертить все нормальные гугловские JPG - в PNG (а жпегов там намного больше), ибо САС пока что не умеет брать смешанные типы КЭША тоже. Либо кэш карты весь в жпеге, либо весь в пнг, но не в обоих одновременно. :(

Да, и вопрос исчерпал себя (на лету правлю хидеры скриптиком и отдаю САСу верные, по коим у него и включается перекодировка в штатном порядке).
The only difference between me and a mad man is that I am not mad. /Salvador Dali/
Изображение
Аватара пользователя
Parasite
Администратор
 
Сообщения: 5646
Зарегистрирован: 23 окт 2008, 17:38
Благодарил (а): 124 раз.
Поблагодарили: 460 раз.

Re: Два типа тайлов в одной карте

Сообщение gpsMax » 29 авг 2011, 08:11

Очередной костылик. Хорошо бы это всё-таки в основную программу интегрировать.
gpsMax
Постигающий Дао
 
Сообщения: 142
Зарегистрирован: 02 апр 2010, 23:58
Благодарил (а): 44 раз.
Поблагодарили: 9 раз.

Re: Два типа тайлов в одной карте

Сообщение Parasite » 29 авг 2011, 10:08

gpsMax писал(а):Очередной костылик.

Одним больше - одним меньше, кто бы их уже считал...

gpsMax писал(а):Хорошо бы это всё-таки в основную программу интегрировать.

Что конкретно? Анализ граф.формата по контенту а не по хидеру? Или автозамену хидеров до начала каких-либо действий над контентом?
Имхо на первое должны быть уже готовые решения - фичу юзает куча современного софта...
The only difference between me and a mad man is that I am not mad. /Salvador Dali/
Изображение
Аватара пользователя
Parasite
Администратор
 
Сообщения: 5646
Зарегистрирован: 23 окт 2008, 17:38
Благодарил (а): 124 раз.
Поблагодарили: 460 раз.

След.

Вернуться в SAS.Планета

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 32