Lỗi trong F ******** quan hệ không gian? (Tôi không chửi rủa)


13

Tôi mong muốn ISpatialFilter.SpatialRelDes mô tả hoạt động nhất quán với IRelationalOperator.Relation . Tuy nhiên, khi tôi chạy mã bên dưới, tôi nhận được:

    Total features : 44368
    Count1: 9 T********
    Count2: 9 T********
    Count1: 21 F********
    Count2: 44359 F********
    Count1: 1 ******F**
    Count2: 1 ******F**

Đây có phải là một lỗi trong F********mối quan hệ?

private void TestSpatialFilter()
{
    IMxDocument mxdoc = ((IApplication)m_application).Document as IMxDocument;
    IFeatureLayer fLayer = mxdoc.FocusMap.get_Layer(0) as IFeatureLayer;
    IEnvelope env = ((IActiveView)mxdoc.FocusMap).Extent;
    env.Expand(0.5, 0.5, true);
    env.Project(((IGeoDataset)fLayer.FeatureClass).SpatialReference);
    Debug.Print("Total features : {0}", fLayer.FeatureClass.FeatureCount(null));
    IFeatureClass fc = fLayer.FeatureClass;
    string[] rels = { "T********", "F********", "******F**" };
    foreach (string rel in rels)
    {
        Debug.Print("Count1: {0} {1}", Count1(fc, env, rel), rel);
        Debug.Print("Count2: {0} {1}", Count2(fc, env, rel), rel);
    }
}

public static int Count1(IFeatureClass fc, IGeometry geom,  string relDescription)
{
    ISpatialFilter sf = new SpatialFilterClass();
    sf.SpatialRel = esriSpatialRelEnum.esriSpatialRelRelation;
    sf.SpatialRelDescription = relDescription;
    sf.Geometry = geom;
    int i = fc.FeatureCount(sf);
    Marshal.FinalReleaseComObject(sf);
    return i;
}
public static int Count2(IFeatureClass fc, IGeometry geom, string relDescription)
{
    int i = 0;
    string relation = String.Format("RELATE(G1,G2,'{0}')", relDescription);
    IRelationalOperator relOp = geom as IRelationalOperator;

    IFeatureCursor fCur = fc.Search(null, false);
    IFeature feat;
    while ((feat = fCur.NextFeature()) != null)
    {
        if(relOp.Relation(feat.Shape,relation))
            i++;
    }
    Marshal.FinalReleaseComObject(fCur);
    return i;
}

1
xin lỗi, không có câu trả lời nào ngoài +1 cho sự hài hước không gian địa lý
bFlood

Câu trả lời:


3

Điều đó có vẻ hơi kỳ quặc. Có lẽ nó chỉ được thử nghiệm với một vài thao tác cụ thể, Ex: Intersects, Disjoint, v.v? Những gì FF*FF****(nghịch đảo T********) làm cho bạn? Tôi dường như nhớ Trong khi không làm việc một vài phiên bản trở lại để nó không làm tôi ngạc nhiên.


1
Điều đó dường như làm việc. Nếu không gian quá đặc biệt, có vẻ như nó sẽ nhận được QA tốt hơn.
Kirk Kuykendall
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.