{"id":2342,"date":"2016-03-01T12:06:18","date_gmt":"2016-03-01T12:06:18","guid":{"rendered":"http:\/\/www.gisdeveloper.co.kr\/?p=2342"},"modified":"2021-04-29T10:45:43","modified_gmt":"2021-04-29T01:45:43","slug":"duramap-xr%ec%97%90%ec%84%9c-tms-%eb%a0%88%ec%9d%b4%ec%96%b4-%ed%99%9c%ec%9a%a9%ed%95%98%ea%b8%b0","status":"publish","type":"post","link":"http:\/\/www.gisdeveloper.co.kr\/?p=2342","title":{"rendered":"DuraMap-Xr\uc5d0\uc11c TMS \ub808\uc774\uc5b4 \ud65c\uc6a9\ud558\uae30"},"content":{"rendered":"<p><P>C#\uacfc \uac19\uc740 COM\uc744 \uc9c0\uc6d0\ud558\ub294 \uc5b8\uc5b4\uc5d0\uc11c GIS \uc5b4\ud50c\ub9ac\ucf00\uc774\uc158\uc744 \uac1c\ubc1c\ud560 \uc218 \uc788\ub294 GIS \uc5d4\uc9c4\uc778 DuraMap-Xr\uc5d0\uc11c TMS \ud615\uc2dd\uc758 \ubc30\uacbd\uc9c0\ub3c4\ub97c \ub808\uc774\uc5b4\ub85c \ud65c\uc6a9\ud560 \uc218 \uc788\ub294 \ucf54\ub4dc\ub97c \uc815\ub9ac\ud574 \ubd05\ub2c8\ub2e4. VWorld\uc5d0\uc11c \uc81c\uacf5\ud558\ub294 \ubc30\uacbd\uc9c0\ub3c4\ub97c \uc608\uc2dc\ub85c \ud558\uc600\uc2b5\ub2c8\ub2e4.<\/P><\/p>\n<p><P>\uba3c\uc800 \uc544\ub798\ub294 \ub4c0\ub77c\ub9f5\uc5d0\uc11c VWorld\uc758 \ubc30\uacbd\uc9c0\ub3c4\ub97c \ud45c\uc2dc\ud55c \ud654\uba74\uc785\ub2c8\ub2e4.<\/P><\/p>\n<p style=\"text-align: center;\"><img decoding=\"async\" src=\"http:\/\/www.gisdeveloper.co.kr\/wp-content\/uploads\/1\/1347969932.png\" \/><\/p>\n<p><P>\uc704\uc758 \uc2e4\ud589 \ud654\uba74\uc5d0 \ub300\ud55c \ucf54\ub4dc\ub97c \uc0b4\ud3b4\ubcf4\uaca0\uc2b5\ub2c8\ub2e4. \uba3c\uc800 TMS \ub808\uc774\uc5b4\ub97c \ucd94\uac00\ud558\ub294 \ucf54\ub4dc\uc785\ub2c8\ub2e4.<\/P><\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"csharp\">\r\nXrMapLib.ValueList URLs = new XrMapLib.ValueList();\r\nURLs.AddValueByString(\r\n    \"http:\/\/xdworld.vworld.kr:8080\/2d\/Base\/201512\/${z}\/${x}\/${y}.png\");\r\n\r\nXrMapLib.Extent MaxMBR = new XrMapLib.Extent();\r\nMaxMBR.MinX = -20037508.342789244;\r\nMaxMBR.MinY = -20037508.342789244;\r\nMaxMBR.MaxX = 20037508.342789244;\r\nMaxMBR.MaxY = 20037508.342789244;\r\n\r\ndouble[] upps = {\r\n    78000, 39000, 19600, 9800, 4900, 2400, \/\/Dummy\r\n    1222.9924523925781, 611.4962261962891, 305.74811309814453, \r\n    152.87405654907226, 76.43702827453613, 38.218514137268066, \r\n    19.109257068634033, 9.554628534317017, 4.777314267158508, \r\n    2.388657133579254, 1.194328566789627, 0.5971642833948135 };\r\n\r\nXrMapLib.ValueList UPPs = new XrMapLib.ValueList();\r\n\r\nfor (int iUPP = 0; iUPP < upps.Length; ++iUPP)\r\n{\r\n    double UPP = upps[iUPP];\r\n    double MapScale = axXr1.GetMapScaleFromUPP(UPP);\r\n\r\n    UPPs.AddValueByFloat(UPP, 14);\r\n\r\n    if (iUPP > 5)\r\n    {\r\n        Scales.Add(MapScale);\r\n    }\r\n}\r\n\r\naxXr1.Layers.AddTMSLayer(\"basemap\", URLs, MaxMBR, UPPs, true);\r\naxXr1.WaitForAllConnections();\r\n\r\nXrMapLib.Coord MapCenter = new XrMapLib.Coord();\r\nMapCenter.X = 14289580.202989;\r\nMapCenter.Y = 4436964.90266281;\r\naxXr1.MapCenter = MapCenter;\r\naxXr1.MapScale = Scales[0];\r\naxXr1.Update();\r\n\r\naxXr1.MouseMode = XrMapLib.XrMapViewModeEnum.XrPanMode;\r\n<\/pre>\n<p><P>\uc704\uc758 \ucf54\ub4dc \uc911 2\ubc88\uc740 \ud0c0\uc77c\ub9f5\uc5d0 \uc811\uadfc\ud558\uae30 \uc704\ud55c URL\uc758 \ub9ac\uc2a4\ud2b8\uc785\ub2c8\ub2e4. VWorld\ub294 TMS \uc774\ubbf8\uc9c0\uc5d0 \uc811\uadfc\ud558\uae30 \uc704\ud55c URL\uc744 \ud558\ub098\ub9cc \uc81c\uacf5\ud569\ub2c8\ub2e4. 5~9\ubc88 \ucf54\ub4dc\ub294 TMS\uc758 \uc804\uccb4 MBR \uac12\uc785\ub2c8\ub2e4. \uadf8\ub9ac\uace0 11\ubc88 \ucf54\ub4dc\uc5d0\uc11c upps \ubc30\uc5f4\uc5d0 \uc800\uc7a5\ub41c \uac12\uc740 Units Per Pixel \uac12\ub4e4\ub85c\uc368, 1 \ud53d\uc140\ub2f9 \uba87 m\uc778\uc9c0\uc5d0 \ub300\ud55c \uac12\uc785\ub2c8\ub2e4. 20\ubc88 \ucf54\ub4dc\uc758 \ubc18\ubcf5\ubb38\uc740 \uc774 upps \ubc30\uc5f4\uc744 \ud1b5\ud574 \uc2e4\uc81c \uc9c0\ub3c4 \ucd95\ucc99\uac12\uc744 \uacc4\uc0b0\ud558\uc5ec Scales\ub77c\ub294 \ubc30\uc5f4\uc5d0 \uc800\uc7a5\ud569\ub2c8\ub2e4. 33\ubc88 \ucf54\ub4dc\uac00\uc11c TMS \ub808\uc774\uc5b4\ub97c \ucd94\uac00\ud558\ub294 \ucf54\ub4dc\uc774\uace0, 37~40\ubc88 \ucf54\ub4dc\uc5d0\uc11c \uccab \uc2e4\ud589\uc2dc \uc9c0\ub3c4\uc758 \uc911\uc2ec \uc704\uce58\uc640 \uc9c0\ub3c4 \ucd95\ucc99\uc744 \uc9c0\uc815\ud569\ub2c8\ub2e4. \uc55e\uc11c UPP\uac12\uc744 \uc9c0\ub3c4 \ucd95\ucc99\uac12\uc73c\ub85c \uacc4\uc0b0\ud558\uc5ec Scales\ub77c\ub294 \ubc30\uc5f4\uc5d0 \uc800\uc7a5\ud55c\ub2e4\uace0 \ud558\uc600\ub294\ub370, Scales \ubcc0\uc218\ub294 \uc544\ub798\uc640 \uac19\uc2b5\ub2c8\ub2e4.<\/P><\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"csharp\">\r\nprivate List&lt;double> Scales = new List&lt;double>();\r\n<\/pre>\n<p><P>TMS\ub97c \ud1b5\ud55c \ubc30\uacbd\uc9c0\ub3c4\ub294 \uc774\ubbf8 \uc815\ud574\uc9c4 \ucd95\ucc99 \ub808\ubca8\uc774 \uc874\uc7ac\ud569\ub2c8\ub2e4. \uc774 \ucd95\ucc99\uac12\uc73c\ub85c \uc9c0\ub3c4\ub97c \ud655\ub300\ud558\uace0 \ucd95\uc18c\ud560 \uacbd\uc6b0\uc5d0 \uac00\uc7a5 \ucd5c\uc0c1\uc758 \uc9c0\ub3c4 \ud488\uc9c8\uc744 \uc0ac\uc6a9\uc790\uc5d0\uac8c \uc81c\uacf5\ud560 \uc218 \uc788\ub294\ub370\uc694. \ub4c0\ub77c\ub9f5\uc5d0\uc11c\ub294 \uc774\ub97c \uc704\ud574 \uc544\ub798\uc640 \uac19\uc740 \ucf54\ub4dc\uac00 \ud544\uc694\ud569\ub2c8\ub2e4.<\/P><\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"csharp\">\r\nprivate void axXr1_OnBeforeMapDrawing(object sender, EventArgs e)\r\n{\r\n    double NewMapScale = axXr1.MapScale;\r\n\r\n    int cntLevels = Scales.Count;\r\n    double Gap = Double.MaxValue;\r\n    int CurrentLevel = -1;\r\n    for (int i = 0; i < cntLevels; i++)\r\n    {\r\n        double ThatGap = Math.Abs(NewMapScale - Scales[i]);\r\n        if (Gap > ThatGap)\r\n        {\r\n            Gap = ThatGap;\r\n            CurrentLevel = i;\r\n        }\r\n    }\r\n\r\n    axXr1.MapScale = Scales[CurrentLevel];\r\n}\r\n<\/pre>\n<p><P>\uc704\ub294 \ub4c0\ub77c\ub9f5\uc758 OnBeforeMapDrawing \uc774\ubca4\ud2b8\uc5d0 \ub300\ud55c \ucf54\ub4dc\ub85c\uc368, TMS\uc5d0\uc11c \uc81c\uacf5\ud558\ub294 \uac00\uc7a5 \uc811\ud569\ud55c \uc9c0\ub3c4 \ucd95\ucc99\uac12\uc744 \uc720\uc9c0\ud558\ub3c4\ub85d \ud558\uace0 \uc788\uc2b5\ub2c8\ub2e4. \uc704\uc758 \ucf54\ub4dc\uc5d0 \ub300\ud55c Visual Studio 2013 \ud504\ub85c\uc81d\ud2b8\ub97c \uc544\ub798\uc5d0 \ucca8\ubd80\ud569\ub2c8\ub2e4.<\/P><\/p>\n<p style='text-align:center'><a href=\"http:\/\/www.gisdeveloper.co.kr\/wp-content\/uploads\/1\/1044187651.zip\"><img width='64' src='\/images\/download.svg' \/><\/a><\/p>\n<p><P>\ub4c0\ub77c\ub9f5 \uc5d4\uc9c4\uc740 \uc81c\uc791\uc0ac\uc778 \uc9c0\uc624\uc11c\ube44\uc2a4\uc758 \uc790\ub8cc\uc2e4\uc5d0\uc11c \ub2e4\uc6b4\ub85c\ub4dc \ubc1b\uc73c\uc2dc\uae30 \ubc14\ub77c\uba70, \ub9c1\ud06c\ub294 \uc544\ub798\uc640 \uac19\uc2b5\ub2c8\ub2e4.<\/P><\/p>\n<p><P><CENTER><A href='http:\/\/www.gisdeveloper.co.kr\/?page_id=3916'>\uc9c0\uc624\uc11c\ube44\uc2a4 \uc790\ub8cc\uc2e4<\/A><\/CENTER><\/P><\/p>\n","protected":false},"excerpt":{"rendered":"<p>C#\uacfc \uac19\uc740 COM\uc744 \uc9c0\uc6d0\ud558\ub294 \uc5b8\uc5b4\uc5d0\uc11c GIS \uc5b4\ud50c\ub9ac\ucf00\uc774\uc158\uc744 \uac1c\ubc1c\ud560 \uc218 \uc788\ub294 GIS \uc5d4\uc9c4\uc778 DuraMap-Xr\uc5d0\uc11c TMS \ud615\uc2dd\uc758 \ubc30\uacbd\uc9c0\ub3c4\ub97c \ub808\uc774\uc5b4\ub85c \ud65c\uc6a9\ud560 \uc218 \uc788\ub294 \ucf54\ub4dc\ub97c \uc815\ub9ac\ud574 \ubd05\ub2c8\ub2e4. VWorld\uc5d0\uc11c \uc81c\uacf5\ud558\ub294 \ubc30\uacbd\uc9c0\ub3c4\ub97c \uc608\uc2dc\ub85c \ud558\uc600\uc2b5\ub2c8\ub2e4. \uba3c\uc800 \uc544\ub798\ub294 \ub4c0\ub77c\ub9f5\uc5d0\uc11c VWorld\uc758 \ubc30\uacbd\uc9c0\ub3c4\ub97c \ud45c\uc2dc\ud55c \ud654\uba74\uc785\ub2c8\ub2e4. \uc704\uc758 \uc2e4\ud589 \ud654\uba74\uc5d0 \ub300\ud55c \ucf54\ub4dc\ub97c \uc0b4\ud3b4\ubcf4\uaca0\uc2b5\ub2c8\ub2e4. \uba3c\uc800 TMS \ub808\uc774\uc5b4\ub97c \ucd94\uac00\ud558\ub294 \ucf54\ub4dc\uc785\ub2c8\ub2e4. XrMapLib.ValueList URLs = new XrMapLib.ValueList(); URLs.AddValueByString( &#8220;http:\/\/xdworld.vworld.kr:8080\/2d\/Base\/201512\/${z}\/${x}\/${y}.png&#8221;); XrMapLib.Extent MaxMBR &hellip; <\/p>\n<p class=\"link-more\"><a href=\"http:\/\/www.gisdeveloper.co.kr\/?p=2342\" class=\"more-link\">\ub354 \ubcf4\uae30<span class=\"screen-reader-text\"> &#8220;DuraMap-Xr\uc5d0\uc11c TMS \ub808\uc774\uc5b4 \ud65c\uc6a9\ud558\uae30&#8221;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[57],"tags":[],"class_list":["post-2342","post","type-post","status-publish","format-standard","hentry","category-duramap-xr"],"_links":{"self":[{"href":"http:\/\/www.gisdeveloper.co.kr\/index.php?rest_route=\/wp\/v2\/posts\/2342","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/www.gisdeveloper.co.kr\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/www.gisdeveloper.co.kr\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/www.gisdeveloper.co.kr\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/www.gisdeveloper.co.kr\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=2342"}],"version-history":[{"count":5,"href":"http:\/\/www.gisdeveloper.co.kr\/index.php?rest_route=\/wp\/v2\/posts\/2342\/revisions"}],"predecessor-version":[{"id":11089,"href":"http:\/\/www.gisdeveloper.co.kr\/index.php?rest_route=\/wp\/v2\/posts\/2342\/revisions\/11089"}],"wp:attachment":[{"href":"http:\/\/www.gisdeveloper.co.kr\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=2342"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/www.gisdeveloper.co.kr\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=2342"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/www.gisdeveloper.co.kr\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=2342"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}