<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    交點判斷
    private bool isAllLineCrossed()
            {
                bool isCrossed = true;

                //map.DeselectAll();
                
    //map.SelectList(TerraceConst.LIST_DIVIDE_AREA);
                
    //map.OpenList(TerraceConst.LIST_DIVIDE_AREA, 0);
                
    //int numLineCross   = map.ScanGeometry("TMP_List", Constants.SIS_GT_CROSS  , Constants.SIS_GM_GEOMETRY, "", "");
                
    //int numLineCrossby = map.ScanGeometry("TMP_List", Constants.SIS_GT_CROSSBY, Constants.SIS_GM_GEOMETRY, "", "");
                
    //int numLine        = numLineCross + numLineCrossby;

                
    //if (numLine != map.GetListSize(TerraceConst.LIST_DIVIDE_LINE))
                
    //    isCrossed = false;

                
    //map.CloseItem();
                
    //map.DeselectAll();

                map.EmptyList("TMP_LIST_LINE");
                map.EmptyList("TMP_LIST_AREA");
                map.EmptyList("TMP_LIST_CROSS");

                //分筆用ラインの外形線を作成して、TMP_LIST_LINEに登録
                map.DeselectAll();
                map.SelectList(TerraceConst.LIST_DIVIDE_LINE);
                map.CreateListFromSelection("TMP_LIST_LINE");
                map.CopyListItems("TMP_LIST_LINE");
                map.DeselectAll();
                map.SelectList("TMP_LIST_LINE");
                map.DoCommand("AComBoundary");
                map.CreateListFromSelection("TMP_LIST_LINE");

                //分筆用エリアの外形線を作成して、TMP_LIST_AREAに登録
                map.DeselectAll();
                map.SelectList(TerraceConst.LIST_DIVIDE_AREA);
                map.CreateListFromSelection("TMP_LIST_AREA");
                map.CopyListItems("TMP_LIST_AREA");
                map.DeselectAll();
                map.SelectList("TMP_LIST_AREA");
                map.DoCommand("AComBoundary");
                map.CreateListFromSelection("TMP_LIST_AREA");

                //入力Lineが筆界線上にかどうか判斷します
                for (int i = 0; i < map.GetListSize("TMP_LIST_LINE"); i++)
                {
                    map.DeselectAll();

                    map.CombineLists("TMP_LIST_CROSS", "TMP_LIST_LINE", "TMP_LIST_AREA", Constants.SIS_BOOLEAN_OR);
                    map.CreateBoolean("TMP_LIST_CROSS", Constants.SIS_BOOLEAN_AND);
                    map.DeselectAll();
                    map.SelectItem();
                    map.DoCommand("AComDecompose");
                    map.CreateListFromSelection("TMP_LIST_CROSS");

                    if (map.GetListSize("TMP_LIST_CROSS") < 2)
                    {
                        isCrossed = false;
                        break;
                    }
                }
                
                map.EmptyList("TMP_LIST_LINE");
                map.EmptyList("TMP_LIST_AREA");
                map.EmptyList("TMP_LIST_CROSS");

                return isCrossed;
            }

    int lineCnt = map.GetListSize(TerraceConst.LIST_DIVIDE_LINE);
                double extendR = 50;
                Dictionary<stringdouble> ptInfos = new Dictionary<stringdouble>();

                map.EmptyList("TMP_LIST_LINE");
                map.EmptyList("TMP_LIST_AREA");
                map.EmptyList("TMP_LIST_CROSS");

                //分筆用ラインの外形線を作成して、TMP_LIST_LINEに登録します
                map.DeselectAll();
                map.SelectList(TerraceConst.LIST_DIVIDE_LINE);
                map.CreateListFromSelection("TMP_LIST_LINE");
                map.CopyListItems("TMP_LIST_LINE");
                map.DeselectAll();
                map.SelectList("TMP_LIST_LINE");
                map.DoCommand("AComBoundary");
                map.CreateListFromSelection("TMP_LIST_LINE");

                //分筆用エリアの外形線を作成して、TMP_LIST_AREAに登録します
                map.DeselectAll();
                map.SelectList(TerraceConst.LIST_DIVIDE_AREA);
                map.CreateListFromSelection("TMP_LIST_AREA");
                map.CopyListItems("TMP_LIST_AREA");
                map.DeselectAll();
                map.SelectList("TMP_LIST_AREA");
                map.DoCommand("AComBoundary");
                map.CreateListFromSelection("TMP_LIST_AREA");

                //入力Lineが筆界線上にかどうか判斷します
                for (int i = 0; i < map.GetListSize("TMP_LIST_LINE"); i++)
                {
                    map.DeselectAll();
                    map.CombineLists("TMP_LIST_CROSS", "TMP_LIST_LINE", "TMP_LIST_AREA", Constants.SIS_BOOLEAN_OR);
                    map.CreateBoolean("TMP_LIST_CROSS", Constants.SIS_BOOLEAN_AND);
                    map.DeselectAll();
                    map.SelectItem();
                    map.DoCommand("AComDecompose");
                    map.CreateListFromSelection("TMP_LIST_CROSS");

                    //入力座標が筆界線上に近いが接していないときの処理です。
                    if (map.GetListSize("TMP_LIST_CROSS") < 2)
                    {
                        map.DeselectAll();
                        map.OpenList(TerraceConst.LIST_DIVIDE_LINE, i);
                        map.SelectItem();
                        ptInfos = SisCommon.GetCurItemPointInfos(map);
                        double sx = ptInfos["始點X"];
                        double sy = ptInfos["始點Y"];
                        double sAngle = ptInfos["始點角度"];
                        double ex = ptInfos["終點X"];
                        double ey = ptInfos["終點Y"];
                        double eAngle = ptInfos["終點角度"];

                        if (mode == TerraceConst.MODE_LINE_EXTEND_VERTICALINTERSECT)//垂直の交點
                        {

                        }
                        else if (mode == TerraceConst.MODE_LINE_EXTEND_EXTENSION)//延長線
                        {
                            //終點延長線
                            double tx = ex + extendR * Math.Cos(Math.Abs(eAngle + 180) * Math.PI / 180);
                            double ty = ey + extendR * Math.Sin(Math.Abs(eAngle + 180) * Math.PI / 180);
                            map.DeselectAll();
                            map.MoveTo(ex, ey, 0);
                            map.LineTo(tx, ty, 0);
                            map.StoreAsLine();
                            map.GetExtent();
                            map.AddToList(TerraceConst.LIST_DIVIDE_LINE); //ラインをリストに追加

                            
    //始點延長線
                            tx = sx + extendR * Math.Cos(Math.Abs(sAngle + 180) * Math.PI / 180);
                            ty = sy + extendR * Math.Sin(Math.Abs(sAngle + 180) * Math.PI / 180);
                            map.DeselectAll();
                            map.MoveTo(sx, sy, 0);
                            map.LineTo(tx, ty, 0);
                            map.StoreAsLine();
                            map.GetExtent();
                            map.AddToList(TerraceConst.LIST_DIVIDE_LINE); //ラインをリストに追加
                        }
                    }
                }
                
                map.EmptyList("TMP_LIST_LINE");
                map.EmptyList("TMP_LIST_AREA");
                map.EmptyList("TMP_LIST_CROSS");
    posted on 2017-01-10 14:57 Ying-er 閱讀(300) 評論(0)  編輯  收藏 所屬分類: GIS/GPS 、.Net
    主站蜘蛛池模板: 亚洲美女免费视频| 一级毛片a女人刺激视频免费| 久久久久成人精品免费播放动漫| 国产亚洲精品成人a v小说| 免费精品视频在线| 中文字幕亚洲激情| 久久香蕉国产线看免费| 久久亚洲美女精品国产精品 | 亚洲理论电影在线观看| 在线免费观看h片| 亚洲午夜未满十八勿入| 日本视频一区在线观看免费| 亚洲一级毛片免费观看| 午夜老司机免费视频| 国产亚洲精品美女久久久久 | 国产A在亚洲线播放| 99热这里只有精品6免费| 亚洲国产成人精品无码区在线网站| 成年免费大片黄在线观看岛国| 亚洲人成77777在线观看网| 国产男女猛烈无遮挡免费视频| 男人和女人高潮免费网站| 亚洲熟妇无码乱子AV电影| 18成禁人视频免费网站| 亚洲真人无码永久在线观看| 国产免费69成人精品视频| 三级黄色免费观看| 亚洲国产美女精品久久| 国产精品va无码免费麻豆| 精品视频一区二区三区免费| 亚洲人配人种jizz| 中文字幕中韩乱码亚洲大片| 91短视频免费在线观看| 老司机福利在线免费观看| 亚洲午夜精品一区二区| 真实乱视频国产免费观看| 光棍天堂免费手机观看在线观看 | 久久久久久久综合日本亚洲| 野花高清在线观看免费3中文 | 一个人看的hd免费视频| 亚洲国产日韩在线一区|