Плохо дело. Модифицировал приведенный выше код обработчика кнопки ввода слоя следующим образом :trir писал(а):ProjToDegrees заработал?
По идее, надо устанавливать ту СК, в которой надо отображать карту. Но возникает вопрос - читается ли СК слоя из shp'а?
Код: Выделить всё
// Ввод файла SHP
procedure TForm1.BtnReadMapClick(Sender: TObject);
var
shp:Shapefile;
Buf : WideString;
begin
if ( OpenDialog1.Execute ) then
begin
// Создаем и вводим слой карты из файла :
shp:=CoShapefile.Create;
shp.Open(OpenDialog1.FileName,nil);
Map1.AddLayer(shp,true);
// создаем объект класса GeoProjection :
MapProj := CoGeoProjection.Create();
// Вводим значение из файла .prj слоя в исходной проекции :
Buf :=
'GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",' +
'SPHEROID["WGS_1984",6378137.0,298.257223563]],' +
'PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]]';
MapProj.ImportFromESRI( Buf );
// устанавливаем созданную систему координат в нашу карту :
Map1.GeoProjection := MapProj;
end;
end;
при исполнении строки
MapProj.ImportFromESRI( Buf );
В то же время, если убрать из строки содержимое файла .prj - сделать ее пустой :
Buf := '';
то ввод слоя проходит нормально.
Исходя из этого, предполагаю, что ошибка связана с синтаксисом вводимого содержимого файла prj.
Вопроса не понял. Поясните поподробнее.trir писал(а): Но возникает вопрос - читается ли СК слоя из shp'а?