ข้อผิดพลาดใน F ******** ความสัมพันธ์เชิงพื้นที่? (ฉันไม่ได้สบถ)


13

ผมจะคาดหวังISpatialFilter.SpatialRelDescriptionการทำงานอย่างต่อเนื่องกับIRelationalOperator.Relation อย่างไรก็ตามเมื่อฉันเรียกใช้รหัสด้านล่างฉันได้รับ:

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

นี่เป็นข้อบกพร่องในF********ความสัมพันธ์หรือไม่?

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
ขออภัยไม่มีคำตอบ แต่ +1 สำหรับอารมณ์ขันเชิงพื้นที่
bFlood

คำตอบ:


3

มันดูแปลกไปหน่อย บางทีมันอาจถูกทดสอบด้วยการทำงานเฉพาะบางอย่างเช่น Ex, Intersects, Disjoint และอื่น ๆ ? อะไรFF*FF****(ผกผันของT********) ทำเพื่อคุณ? ฉันดูเหมือนจะจำได้ว่าภายในไม่ทำงานสองสามเวอร์ชันกลับมาดังนั้นมันจึงไม่ทำให้ฉันประหลาดใจ


1
ดูเหมือนว่าจะทำงาน ถ้าอวกาศมีความพิเศษดังนั้นก็ดูเหมือนว่าจะได้รับ QA ที่ดีขึ้น
Kirk Kuykendall
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.