<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 閱讀(288) 評論(0)  編輯  收藏 所屬分類: GIS/GPS.Net
    主站蜘蛛池模板: 亚洲黄色网站视频| 亚洲AV无码1区2区久久| 我想看一级毛片免费的| 免费下载成人电影| 四虎影视永久免费视频观看| 四虎永久免费影院| 男人免费视频一区二区在线观看| 一级全免费视频播放| 亚洲免费视频播放| 免费一级毛片一级毛片aa| 亚洲欧洲日产国产最新| 美女被艹免费视频| 亚洲一区免费在线观看| 亚洲国色天香视频| 日韩在线免费播放| 亚洲精彩视频在线观看| 91视频免费观看| 成人免费看吃奶视频网站| 久久亚洲精品高潮综合色a片| 99xxoo视频在线永久免费观看| 国产麻豆剧传媒精品国产免费| 美女被免费视频网站| 国产亚洲精品观看91在线| 爱情岛论坛亚洲品质自拍视频网站| 久久久久免费看成人影片| 免费人成网站在线播放| 成人av片无码免费天天看| 国产伦精品一区二区三区免费迷| 猫咪免费人成网站在线观看入口| 久久国产成人亚洲精品影院| 亚洲色丰满少妇高潮18p| h视频在线免费看| 狼人大香伊蕉国产WWW亚洲| 亚洲色婷婷一区二区三区| 中文字幕在线免费视频| 亚洲精品在线电影| 亚洲一区二区三区乱码A| 青青青亚洲精品国产| 亚洲高清国产拍精品26U| 99在线免费视频| 亚洲av无码片在线观看|