2015-01-13 7 views
2

MapInfo 파일 (* .tab + 친구)을 읽으려면 mitab.dll을 사용하고 있습니다. 이 파일에는 단순 폴리 라인과 곡선이 포함될 수 있습니다. 지금까지이 둘을 구별하지 못했고 모든 것을 폴리 라인으로 읽었습니다. 내가 읽는 두 라인 유형을 결정할 수있는 mitab-API 호출이 있습니까?mitab에서 읽은 MapInfo 파일에서 폴리선과 곡선을 어떻게 구별 할 수 있습니까?

(간체) 코드 :

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; 

(이것은 델파이 2077과 함께,하지만 내가 mitab를 사용하는 다른 솔루션을.)

+0

'case TABFC_Arc의 FeatureType : HandleArc (feature); ... '또는 그런 무엇인가? – TLama

+0

불행히도 그렇게 쉽지는 않습니다. 두 유형 모두 FeatureType TABFC_Polyline입니다. 그래서 나는 최근에야 문제가 있다는 것을 알게되었습니다. – dummzeuch

답변

0

두 선 유형이 존재합니까?

질문을 여러 사이트에 게시 했으므로 응답이 없으므로 Mitab의 온라인 설명서에 곡선 폴리곤이나 스플라인이 언급되어 있지 않으므로 폴리 라인의 곡선 특성이 있는지 궁금합니다.

+0

예. 그렇습니다. 우리는 고객으로부터 두 가지 유형 모두를받으며, 어떤 부분인지를 아는 것이 중요합니다. MapInfo는 어떻게 든 구분할 수 있습니다. – dummzeuch

+0

그래서 고객은 어떤 종류인지 구분하지 않고 두 가지 유형의 폴리를 제공합니다. 폴리선을 그릴 때, 그들은 모두 직선 부분으로 나옵니다. 그 중 일부는 곡선 또는 다듬질 된 다각형이어야한다고 생각하십니까? 어떻게 알았지? 아마도 고객이 일부 폴리 라인에서 매끄러운 루틴을 사용하고있을 수도 있지만 알 수있는 단서를 제공하지는 못합니다. 어쩌면 고객에게 직접 물어볼 수 있습니다. –

+0

MapInfo에서 다르게 보이기 때문에 나는 알고있다. 고객은 다른 유형이 있다는 것을 인식하지 못합니다. 그들은 단지 MapInfo를 사용합니다. 심지어 더 나빠진 다른 일부 GIS에서 내보낼 수도 있습니다. 그들은이 분야에서 실제로 지식이 없습니다. – dummzeuch