Передвай. Там до 2 гигабайт можно. Это обычная строка однобайтовых символов с терминальным нулем.garl писал(а):TDownloadRequest.Create(
VLink,
VHeader,
AInetConfig.GetStatic
);
имеем VHeader - AnsiString
есть необходимость передавать куки больше 255 символов.
на сколько трудно и где рыть? или есть другие варианты в запрос передать отдельно куки большого размера?
Вопросы по исходному коду
- vdemidov
- Гуру
- Сообщения: 1687
- Зарегистрирован: 12 дек 2008, 13:10
- Откуда: Киев
- Благодарил (а): 191 раз
- Поблагодарили: 157 раз
Re: Вопросы по исходному коду
Чтобы понять программу, вы должны стать одновременно и машиной, и программой.
Re: Вопросы по исходному коду
Как уже не раз говорили проект огромный, нету комментов(минимум), много интерфейсов... и прочее, сложно понять общую картину проекта. Искал класс или метод который конвертирует [lat,lng] в [z,x,y], во время скачки и/или после для чтения из кеша. Сам кроме LatLng2RelativeInternal ничего не нашел, да и тот что "внутреннее выдает" в пределах [0-1]. Сперва хотел исользовать код от гугла, потом нашел и другие, но все дают неправильные координаты тайла для заданного [lat,lng]. Точнее такой результат:
cache\map\z19\173\x177383\97\y100095.png // правильный
cache\map\z19\173\x177206\97\y100134.png
Вопрос: Какой класс или метод который конвертирует [lat,lng] в [z,x,y], во время скачки и/или после для чтения из кеша?
В частности интересует EPSG=3785.
Входные [lon = 63.355570, lat = 39.054670] подаю на следующую функцию:
результат подаю на эту:
на выходе одно и тоже по X RelInt2TilePos Coords X:177206,118172444
по Y: 117636,115362263 съезжает еще дальше.
Переформулирую вопрос:
Где или как программа сглаживает эту неточность/погрешность расчета координат тайла?
cache\map\z19\173\x177383\97\y100095.png // правильный
cache\map\z19\173\x177206\97\y100134.png
Вопрос: Какой класс или метод который конвертирует [lat,lng] в [z,x,y], во время скачки и/или после для чтения из кеша?
В частности интересует EPSG=3785.
- скрытый текст: показать
Входные [lon = 63.355570, lat = 39.054670] подаю на следующую функцию:
Код: Выделить всё
function TProjectionTypeMercatorOnSphere.LonLat2RelativeInternal(
const APoint: TDoublePoint
): TDoublePoint;
var
z, c: Extended; { Extended is a Pascal type that will hold an extended floating point value.}
begin
Result.x := 0.5 + APoint.x / 360;
z := Sin(APoint.y * Pi / 180);
c := 1 / (2 * Pi);
Result.y := 0.5 - 0.5 * Ln((1 + z) / (1 - z)) * c;
end;Код: Выделить всё
function TProjectionBasic256x256.InternalRelative2TilePosFloat(
const APoint: TDoublePoint
): TDoublePoint;
begin
Result := DoublePoint(APoint.X * FTilesFloat, APoint.Y * FTilesFloat);
end;по Y: 117636,115362263 съезжает еще дальше.
Переформулирую вопрос:
Где или как программа сглаживает эту неточность/погрешность расчета координат тайла?
- vdemidov
- Гуру
- Сообщения: 1687
- Зарегистрирован: 12 дек 2008, 13:10
- Откуда: Киев
- Благодарил (а): 191 раз
- Поблагодарили: 157 раз
Re: Вопросы по исходному коду
Читаем внимательно название класса TProjectionTypeMercatorOnSphere - Меркатор на СФЕРЕ
А если вас интересует EPSG=3785, то это Меркатор на Эллипсоиде - TProjectionTypeMercatorOnEllipsoid совсем другой класс, совсем другой алгоритм пересчета
А если вас интересует EPSG=3785, то это Меркатор на Эллипсоиде - TProjectionTypeMercatorOnEllipsoid совсем другой класс, совсем другой алгоритм пересчета
Чтобы понять программу, вы должны стать одновременно и машиной, и программой.
Re: Вопросы по исходному коду
Верно, код EPSG неправильный. В коде что копипастил есть такой коммент:
С этого (от gdal) коммента запомнил код и в других местах не обращал вниамание.
До того как начать новую тему пробовал и эллиптический, у него результат еще больше далек от правильного:
RelInt2TilePos Coords X:177206,306042311 Y: NaN
Только по Y разница пересчета, точнее функции обеих классов отличаются одной строкой:
При sradiusa = sradiusb результат вычисления по эллиптическому одинаковый со сферическим, но стоит задать sradiusb=6356752.3142 и Y получается NaN для эллиптического.
Может Params.txt неверный?
Код: Выделить всё
//Converts XY point from (Spherical) Web Mercator EPSG:3785 (unofficially EPSG:900913) to lat/lon in WGS84 Datum
public static Point MetersToLatLon(Point m)
{
var ll = new Point();
ll.X = (m.X / OriginShift) * 180.0;
ll.Y = (m.Y / OriginShift) * 180.0;
ll.Y = 180.0 / Math.PI * (2 * Math.Atan(Math.Exp(ll.Y * Math.PI / 180.0)) - Math.PI / 2.0);
return ll;
}До того как начать новую тему пробовал и эллиптический, у него результат еще больше далек от правильного:
RelInt2TilePos Coords X:177206,306042311 Y: NaN
Только по Y разница пересчета, точнее функции обеих классов отличаются одной строкой:
Код: Выделить всё
Result.y := (0.5 - c * (ArcTanh(z) - FExct * ArcTanh(FExct * z))); [i] // эллиптический[/i]
Result.y := 0.5 - 0.5 * Ln((1 + z) / (1 - z)) * c; [i] // сферический[/i]
Может Params.txt неверный?
Код: Выделить всё
[PARAMS]
pnum=2
GUID={CBA03063-23D9-4FA4-931A-9182B98644B1}
name_ru=Карта (Google)
name=Map (Google)
name_uk=Карта (Google)
ParentSubMenu=Google
DefURLBase=http://mt.google.com/vt/lyrs=m@169000000&hl=ru
projection=1
sradiusa=6378137
sradiusb=6378137
NameInCache=map
Ext=.png
DefHotKey=77
ContentType=image/png
[ViewInfo]
EPSG=3785- vdemidov
- Гуру
- Сообщения: 1687
- Зарегистрирован: 12 дек 2008, 13:10
- Откуда: Киев
- Благодарил (а): 191 раз
- Поблагодарили: 157 раз
Re: Вопросы по исходному коду
Конкретно какой вопрос по коду САС.Планеты? То что у вас где-то ошибка мы уже поняли, но это форум посвящен разработке САС.Планеты, поэтому ваш вопрос оффтопик.
Чтобы понять программу, вы должны стать одновременно и машиной, и программой.
Re: Вопросы по исходному коду
Конкретный вопрос на первом посте задавал, но для вас это оффтоп потому просто указали на ошибку кода EPSG и отвернулись.
На втором посте показал что не до конца знаю весь проект, ибо по коду с инета и по коду самого проекта координаты тайлов не совпадают, одинаково неверные. Потому подумал может я что-то упустил в проекте, ту часть где происходит "финальный пересчет". Написал вопрос в эту тему в надежде что кто нибудь укажет на то что я упускаю. Зная проблему указать на него парами строк ничего не стоит. Разрабы поднявшие сей проект(включая вас?) знают кодовую часть лучше всех.
Нуда лады, сам как нидь разберусь.
На втором посте показал что не до конца знаю весь проект, ибо по коду с инета и по коду самого проекта координаты тайлов не совпадают, одинаково неверные. Потому подумал может я что-то упустил в проекте, ту часть где происходит "финальный пересчет". Написал вопрос в эту тему в надежде что кто нибудь укажет на то что я упускаю. Зная проблему указать на него парами строк ничего не стоит. Разрабы поднявшие сей проект(включая вас?) знают кодовую часть лучше всех.
Нуда лады, сам как нидь разберусь.
- vdemidov
- Гуру
- Сообщения: 1687
- Зарегистрирован: 12 дек 2008, 13:10
- Откуда: Киев
- Благодарил (а): 191 раз
- Поблагодарили: 157 раз
Re: Вопросы по исходному коду
Dopect писал(а): часть где происходит "финальный пересчет"
Нет никакого финального пересчета.
Будут конкретные вопросы по коду САСа - задавайтеDopect писал(а):Нуда лады, сам как нидь разберусь.
Чтобы понять программу, вы должны стать одновременно и машиной, и программой.
Re: Вопросы по исходному коду
Добрый день. Подскажите, пожалуйста, какой файл в исходном коде отвечает за прорисовку полигонов на карте. Потихоньку пытаюсь разобраться в программе и решил начать с полигонов.
- vdemidov
- Гуру
- Сообщения: 1687
- Зарегистрирован: 12 дек 2008, 13:10
- Откуда: Киев
- Благодарил (а): 191 раз
- Поблагодарили: 157 раз
Re: Вопросы по исходному коду
Векторные данные меток рендерятся в растр в модуле u_VectorTileRendererForMarks.paslambda88 писал(а):Добрый день. Подскажите, пожалуйста, какой файл в исходном коде отвечает за прорисовку полигонов на карте.
А векторыне тайлы типа викимапии в модуле u_VectorTileRenderer.pas
Не самая простая часть программыlambda88 писал(а):Потихоньку пытаюсь разобраться в программе и решил начать с полигонов.
Чтобы понять программу, вы должны стать одновременно и машиной, и программой.
Re: Вопросы по исходному коду
Спасибо!
Не самая простая, но для проекта нужная)))vdemidov писал(а):Не самая простая часть программы