Как я могу различить полилинии и кривые линии в файлах MapInfo, которые читает mitab?
Я использую mitab.dll для чтения файлов MapInfo (*.tab + друзья). Эти файлы могут содержать простые полилинии, а также изогнутые линии. До сих пор я был не в состоянии различить эти два и читать все как полилинии. Есть ли какой-нибудь вызов mitab-API, который позволяет мне определить, какой из этих двух типов строк я читаю?
(упрощенный) код:
procedure HandlePolyline(_Feature: mitab_Feature);
var
i, j: LongInt;
pointCount: LongInt;
partCount: LongInt;
X, Y: array of Double;
begin
partCount := FMitabDll.get_parts(_Feature);
for i := 0 to partCount - 1 do begin
pointCount := FMitabDll.get_vertex_count(_Feature, i);
SetLength(X, pointCount);
SetLength(Y, pointCount);
for j := 0 to pointCount - 1 do begin
X[j] := FMitabDll.get_vertex_x(_Feature, i, j);
Y[j] := FMitabDll.get_vertex_y(_Feature, i, j);
end;
// -> Here I have got a polyline, but it might be a curved line, how do I know?
end;
end;
i := 1;
repeat
feature := FMitabDll.read_feature(FTabHandle, i);
FeatureType := FMitabDll.get_type(feature);
case FeatureType of
TABFC_Polyline: HandlePolyline(feature);
end;
i := FMitabDll.next_feature_id(FTabHandle, i);
FMitabDll.destroy_feature(feature);
until i = -1;
(Это с Delphi 2077, но я беру любое другое решение, которое использует mitab.)
1 ответ
Существуют ли оба типа линий?
Поскольку вы разместили свой вопрос на нескольких сайтах и, по-видимому, не получили ответов, а в онлайн-документации для Mitab не упоминаются изогнутые многоугольники и даже сплайны, мне интересно, существует ли характеристика кривой для полилиний.