<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
    主站蜘蛛池模板: 6080午夜一级毛片免费看 | 国产h肉在线视频免费观看| 中文字幕精品无码亚洲字| 深夜a级毛片免费视频| 亚洲第一区在线观看| 四虎成人精品国产永久免费无码| 亚洲av高清在线观看一区二区 | 亚洲综合色视频在线观看| 无码AV动漫精品一区二区免费 | 污视频网站在线免费看| 亚洲无码黄色网址| 中文字幕不卡免费视频| 亚洲精品无码专区在线在线播放 | 亚洲成a人片在线观看日本| a毛片在线免费观看| 亚洲天堂一区二区| 日韩免费精品视频| 亚洲精品无码你懂的| 波多野结衣中文一区二区免费 | 亚洲综合熟女久久久30p| 日本在线免费观看| 亚洲黄色免费观看| 成人免费视频一区二区三区| 国产精品亚洲а∨无码播放不卡| 亚洲国产中文字幕在线观看 | 亚洲日韩AV无码一区二区三区人| 啊灬啊灬别停啊灬用力啊免费看| 国产激情久久久久影院老熟女免费 | 亚洲欧美一区二区三区日产| 亚洲А∨精品天堂在线| 一个人免费视频观看在线www| 亚洲最大视频网站| 国产自产拍精品视频免费看| 国产性生大片免费观看性| 77777_亚洲午夜久久多人| 永久黄网站色视频免费直播 | 亚洲一线产品二线产品| 久久久久亚洲AV成人网人人网站| 99视频有精品视频免费观看| 亚洲av无码专区在线观看亚| 亚洲一区二区三区自拍公司|