03
2018-Dec
국토지리정보원 타일맵 관련(제발부탁드립니다 ㅠㅠ)작성자: 궁금이 IP ADRESS: *.205.208.186 조회 수: 770
안녕하세요 몇가지 질문이 있어서 올립니다.
제발 힌트라도 아시는 분은 많이 답변 부탁드립니다.
저는 c/s환경에서 외부 인터넷이 단절된 폐쇄망에서 개발해야 합니다. (웹을 전혀 모릅니다. ㅠㅠ)
그래서 지금 국내 유일하게 국토지리 정보원에서 타일맵을 파일로 제공하여 받아 왔습니다.
대충 구조를 보니 opnelayers를 사용했고 폴더 구조는
L06/0/57.png 더군요 첫폴더명은 스케일레벨 인것 같고 두번째 폴더명은 x좌표 세번째 파일명은 y좌표인듯 합니다.
찾아보니 웹에서는 opnelayers 라이브러리를 사용해서 쉽게 구현하는 것 같은데요
c/s에서는 특별한 라이브러리가 없는듯 하여 질문 드립니다.
혹시 위의 구조로 256/256 비트맵 이미지에서 좌표를 픽셀단위로 구할 수 있는 간단한 수학식은 없을까요?
간단하진 않겠지만 그렇게 심하게 복잡하지도 않을 듯 할 것 같다는게 제 생각입니다.
좌표만 구할 수 있으면 c/s엔진을 만들 수 있을듯 합니다.
제발 많은 답변 부탁드립니다.
아래는 국토부에서 제공한 xml 파일의 내용입니다.
혹시 아래 내용을 해석하는데 조금이라도 도움되는 답변도 감사히 받겠습니다.
그럼 수고하세요
<?xml version="1.0" encoding="UTF-8"?>
-<CacheInfo xmlns:typens="http://www.esri.com/schemas/ArcGIS/10.0" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="typens:CacheInfo">
-<TileCacheInfo xsi:type="typens:TileCacheInfo">
-<SpatialReference xsi:type="typens:ProjectedCoordinateSystem">
<WKT>PROJCS["ITRF_2000_UTM_K",GEOGCS["GCS_ITRF_2000",DATUM["D_ITRF_2000",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",1000000.0],PARAMETER["False_Northing",2000000.0],PARAMETER["Central_Meridian",127.5],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",38.0],UNIT["Meter",1.0]]</WKT>
<XOrigin>-4620900</XOrigin>
<YOrigin>-12203900</YOrigin>
<XYScale>450445547.3910538</XYScale>
<ZOrigin>-100000</ZOrigin>
<ZScale>10000</ZScale>
<MOrigin>-100000</MOrigin>
<MScale>10000</MScale>
<XYTolerance>0.001</XYTolerance>
<ZTolerance>0.001</ZTolerance>
<MTolerance>0.001</MTolerance>
<HighPrecision>true</HighPrecision>
</SpatialReference>
-<TileOrigin xsi:type="typens:PointN">
<X>-200000</X>
<Y>4000000</Y>
</TileOrigin>
<TileCols>256</TileCols>
<TileRows>256</TileRows>
<DPI>96</DPI>
-<LODInfos xsi:type="typens:ArrayOfLODInfo">
+<LODInfo xsi:type="typens:LODInfo">
-<LODInfo xsi:type="typens:LODInfo">
<LevelID>1</LevelID>
<Scale>236398077.5424</Scale>
<Resolution>62547.116443992891</Resolution>
</LODInfo>
+<LODInfo xsi:type="typens:LODInfo">
-<LODInfo xsi:type="typens:LODInfo">
<LevelID>3</LevelID>
<Scale>59099519.385600001</Scale>
<Resolution>15636.779110998223</Resolution>
</LODInfo>
-<LODInfo xsi:type="typens:LODInfo">
<LevelID>4</LevelID>
<Scale>29549759.6928</Scale>
<Resolution>7818.3895554991113</Resolution>
</LODInfo>
-<LODInfo xsi:type="typens:LODInfo">
<LevelID>5</LevelID>
<Scale>14774879.8464</Scale>
<Resolution>3909.1947777495557</Resolution>
</LODInfo>
-<LODInfo xsi:type="typens:LODInfo">
<LevelID>6</LevelID>
<Scale>7387439.9232000001</Scale>
<Resolution>1954.5973888747778</Resolution>
</LODInfo>
-<LODInfo xsi:type="typens:LODInfo">
<LevelID>7</LevelID>
<Scale>3693719.9616</Scale>
<Resolution>977.29869443738892</Resolution>
</LODInfo>
-<LODInfo xsi:type="typens:LODInfo">
<LevelID>8</LevelID>
<Scale>1846859.9808</Scale>
<Resolution>488.64934721869446</Resolution>
</LODInfo>
-<LODInfo xsi:type="typens:LODInfo">
<LevelID>9</LevelID>
<Scale>923429.99040000001</Scale>
<Resolution>244.32467360934723</Resolution>
</LODInfo>
-<LODInfo xsi:type="typens:LODInfo">
<LevelID>10</LevelID>
<Scale>461714.9952</Scale>
<Resolution>122.16233680467361</Resolution>
</LODInfo>
-<LODInfo xsi:type="typens:LODInfo">
<LevelID>11</LevelID>
<Scale>230857.4976</Scale>
<Resolution>61.081168402336807</Resolution>
</LODInfo>
-<LODInfo xsi:type="typens:LODInfo">
<LevelID>12</LevelID>
<Scale>115428.7488</Scale>
<Resolution>30.540584201168404</Resolution>
</LODInfo>
-<LODInfo xsi:type="typens:LODInfo">
<LevelID>13</LevelID>
<Scale>57714.374400000001</Scale>
<Resolution>15.270292100584202</Resolution>
</LODInfo>
-<LODInfo xsi:type="typens:LODInfo">
<LevelID>14</LevelID>
<Scale>28857.1872</Scale>
<Resolution>7.6351460502921009</Resolution>
</LODInfo>
-<LODInfo xsi:type="typens:LODInfo">
<LevelID>15</LevelID>
<Scale>14428.5936</Scale>
<Resolution>3.8175730251460505</Resolution>
</LODInfo>
-<LODInfo xsi:type="typens:LODInfo">
<LevelID>16</LevelID>
<Scale>7214.2968000000001</Scale>
<Resolution>1.9087865125730252</Resolution>
</LODInfo>
-<LODInfo xsi:type="typens:LODInfo">
<LevelID>17</LevelID>
<Scale>3607.1484</Scale>
<Resolution>0.95439325628651261</Resolution>
</LODInfo>
-<LODInfo xsi:type="typens:LODInfo">
<LevelID>18</LevelID>
<Scale>1803.5742</Scale>
<Resolution>0.47719662814325631</Resolution>
</LODInfo>
-<LODInfo xsi:type="typens:LODInfo">
<LevelID>19</LevelID>
<Scale>901.78710000000001</Scale>
<Resolution>0.23859831407162815</Resolution>
</LODInfo>
</LODInfos>
</TileCacheInfo>
-<TileImageInfo xsi:type="typens:TileImageInfo">
<CacheTileFormat>PNG8</CacheTileFormat>
<CompressionQuality>0</CompressionQuality>
<Antialiasing>true</Antialiasing>
</TileImageInfo>
-<CacheStorageInfo xsi:type="typens:CacheStorageInfo">
<StorageFormat>esriMapCacheStorageModeExploded</StorageFormat>
<PacketSize>0</PacketSize>
</CacheStorageInfo>
</CacheInfo>
어떤 라이브러리를 사용하시는지는 모르겠으나, 좌표설정하면 대부분 딱 들어 맞아야 합니다.
opnelayers와 다른 라이브러리 모두 동일합니다.
GIS 라이브러이 없이 CS로 하나씩 다 개발하시나요?