<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
    主站蜘蛛池模板: 亚洲黄网站wwwwww| 亚洲AV日韩AV永久无码绿巨人| 麻豆狠色伊人亚洲综合网站| 久久免费观看国产99精品| 久久综合图区亚洲综合图区| 你好老叔电影观看免费| 国产AV无码专区亚洲AV毛网站| 男女一边桶一边摸一边脱视频免费| 亚洲中文久久精品无码ww16| a级毛片免费播放| 久久精品国产亚洲av影院| 1000部国产成人免费视频| 色在线亚洲视频www| 永久免费观看的毛片的网站| 国产成人人综合亚洲欧美丁香花 | 99热精品在线免费观看| 亚洲系列国产精品制服丝袜第| 狼群影院在线观看免费观看直播| 亚洲一区在线免费观看| 日韩成人免费视频播放| a级毛片免费观看网站| 亚洲卡一卡2卡三卡4卡无卡三| 中文免费观看视频网站| 日韩亚洲翔田千里在线| 亚洲色爱图小说专区| 成人免费激情视频| 处破女第一次亚洲18分钟| 亚洲国产一成人久久精品| 日韩国产免费一区二区三区| 黄色毛片免费在线观看| 亚洲AV无码精品色午夜果冻不卡| 国产在线观看麻豆91精品免费| 国产精品亚洲综合网站| 亚洲视频免费在线观看| 日本免费网站在线观看| 日本免费高清视频| 久久亚洲AV成人无码国产电影| 亚洲国产精品高清久久久| 免费观看男人免费桶女人视频| 两个人www免费高清视频| 亚洲色www永久网站|