2000.5.7
V6.5で実行確認

数値地図250mメッシュ標高変換SML-Ver.2

ダウンロードはこちらdem250v2.sml

●今回のVer.2の変更内容

●必要な前処理


●変えていない部分

実行前に、2行目に数値地図ファイルのある場所を記載してください。
--------------------------------------------------------------
clear()
infile=fopen("d:/data/250M/5739.SEM","r")  <----実行前に、入力ファイルの場所(パス)を設定する
line$=fgetline$(infile)

code$=left$(line$,6)
scale$=mid$(line$,7,5)
survey$=mid$(line$,12,4)
modify$=mid$(line$,16,4)
degital$=mid$(line$,20,4)
ew_count$=mid$(line$,24,3)
sn_count$=mid$(line$,27,3)
ld_lat_do$=mid$(line$,30,3)
ld_lat_bun$=mid$(line$,33,2)
ld_lat_byo$=mid$(line$,35,2)
ld_lon_do$=mid$(line$,37,3)
ld_lon_bun$=mid$(line$,40,2)
ld_lon_byo$=mid$(line$,42,2)
ru_lat_do$=mid$(line$,44,3)
ru_lat_bun$=mid$(line$,47,2)
ru_lat_byo$=mid$(line$,49,2)
ru_lon_do$=mid$(line$,51,3)
ru_lon_bun$=mid$(line$,54,2)
ru_lon_byo$=mid$(line$,56,2)
map_num$=mid$(line$,58,1)
map_num1name$=mid$(line$,59,20)
map_num1flag$=mid$(line$,79,1)
map_num2name$=mid$(line$,80,20)
map_num2flag$=mid$(line$,100,1)
map_num3name$=mid$(line$,101,20)
map_num3flag$=mid$(line$,121,1)
map_num4name$=mid$(line$,122,20)
map_num4flag$=mid$(line$,142,1)
record_num0$=mid$(line$,143,3)
comment$=mid$(line$,146,80)

array record_flag[320]
for i=1 to 320.2
begin
temp$=mid$(line$,226+(i-1),1)
record_flag[i]=StrToNum(temp$)
end

GetOutputRaster(RAS1,320,320,"16-bit unsigned")  <-----実行時、インポート先のファイル、オブジェクト名を入力。

array record_value[320]

for j=1 to 320
if (record_flag[j]==0) then
begin
for k = 1 to 320
RAS1[j,k] = 0   <-----0(海部)ならば、j行目320カラム全部に0を代入。
end
else
begin
records$=fgetline$(infile)
mesh_code$=left$(records$,6)
record_num$=mid$(records$,7,3)
for k = 1 to 320
begin
value_temp$=mid$(records$,10+(k-1)*5,5)
record_value[k]=StrToNum(value_temp$)
# printf("value is %d\n",record_value[k])
RAS1[j,k]=record_value[k]/10  <-----1(標高データ存在)ならば、データファイルを読む。
end
end

#Set -999.9 NULL
#SetNull(RAS1, -999.9)

#attach georef
array xsrc[4], ysrc[4], zsrc[4]
array xdest[4], ydest[4], zdest[4]
ld_lat_1=StrToNum(ld_lat_do$)
ld_lat_2=StrToNum(ld_lat_bun$)
ld_lat_3=StrToNum(ld_lat_byo$)
ld_lat_dd=ld_lat_1+ld_lat_2/60+ld_lat_3/3600
ld_lon_1=StrToNum(ld_lon_do$)
ld_lon_2=StrToNum(ld_lon_bun$)
ld_lon_3=StrToNum(ld_lon_byo$)
ld_lon_dd=ld_lon_1+ld_lon_2/60+ld_lon_3/3600
ru_lat_1=StrToNum(ru_lat_do$)
ru_lat_2=StrToNum(ru_lat_bun$)
ru_lat_3=StrToNum(ru_lat_byo$)
ru_lat_dd=ru_lat_1+ru_lat_2/60+ru_lat_3/3600
ru_lon_1=StrToNum(ru_lon_do$)
ru_lon_2=StrToNum(ru_lon_bun$)
ru_lon_3=StrToNum(ru_lon_byo$)
ru_lon_dd=ru_lon_1+ru_lon_2/60+ru_lon_3/3600
#control point 1 - upper left corner
xsrc[1]=0
ysrc[1]=0
zsrc[1]=0
xdest[1]=ld_lon_dd
ydest[1]=ru_lat_dd
zdest[1]=0
#control point 2 - lower right corner
xsrc[2]=320
ysrc[2]=320
zsrc[2]=0
xdest[2]=ru_lon_dd
ydest[2]=ld_lat_dd
zdest[2]=0
#control point 3 - upper right corner
xsrc[3]=320
ysrc[3]=0
zsrc[3]=0
xdest[3]=ru_lon_dd
ydest[3]=ru_lat_dd
zdest[3]=0
#control point 4 - lower left corner
xsrc[4]=0
ysrc[4]=320
zsrc[4]=0
xdest[4]=ld_lon_dd
ydest[4]=ld_lat_dd
zdest[4]=0
#set number of control points
numpoints = 4
# now create the georef via dailog
CreateControlPointGeoref(RAS1, numpoints, xsrc, ysrc, zsrc, xdest, ydest, zdest) <----ここでダイアログが開く。LatLon及び必要なDatumを選択。

printf("code is %s\n",code$) <----コンソールへの表示はここから開始。
printf("scale is %s\n",scale$)
printf("survey is %s\n",survey$)
printf("modify is %s\n",modify$)
printf("degital is %s\n",degital$)
printf("ew_count is %s\n",ew_count$)
printf("sn_count is %s\n",sn_count$)
printf("ld_lat_do is %s\n",ld_lat_do$)
printf("ld_lat_bun is %s\n",ld_lat_bun$)
printf("ld_lat_byo is %s\n",ld_lat_byo$)
printf("ld_lon_do is %s\n",ld_lon_do$)
printf("ld_lon_bun is %s\n",ld_lon_bun$)
printf("ld_lon_byo is %s\n",ld_lon_byo$)
printf("ru_lat_do is %s\n",ru_lat_do$)
printf("ru_lat_bun is %s\n",ru_lat_bun$)
printf("ru_lat_byo is %s\n",ru_lat_byo$)
printf("ru_lon_do is %s\n",ru_lon_do$)
printf("ru_lon_bun is %s\n",ru_lon_bun$)
printf("ru_lon_byo is %s\n",ru_lon_byo$)
printf("map_num is %s\n",map_num$)
printf("map_num1name is %s\n",map_num1name$)
printf("map_num1flag is %s\n",map_num1flag$)
printf("map_num2name is %s\n",map_num2name$)
printf("map_num2flag is %s\n",map_num2flag$)
printf("map_num3name is %s\n",map_num3name$)
printf("map_num3flag is %s\n",map_num3flag$)
printf("map_num4name is %s\n",map_num4name$)
printf("map_num4flag is %s\n",map_num4flag$)
printf("record_num0 is %s\n",record_num0$)
printf("comment is %s\n",comment$)
for j=1 to 320
begin
printf("record_flag[%d] is %d\n",j, record_flag[j])
end
CloseRaster(RAS1)
fclose(infile)
beep()

-------------------------------
処理を終了すると、SMLは読み込んだヘッダー情報を確認のために画面に表示します。
直した漢字の周辺をよく見てください。
こんな風になっていればOKです