Zivatar.hu Zivatar.hu Felhőtár
Pontszerű adatok tárolása térinformatikai formátumban (f90) - Zivatar.hu

Pontszerű adatok tárolása térinformatikai formátumban (f90)

Bemenő adat formátuma:

<néhány sornyi fejléc (pl. leírás, magyarázat) >

<x_koo, y_koo, érték>

Kimenő adat formátuma: shapefile (.shp, .dbf)

Szükséges library: FortranGIS/shapelib

program pont2shp
use,intrinsic :: ISO_C_BINDING
use shapelib
integer,parameter :: nmax=1E8 ! adatok maximalis szama
real(kind=c_double) :: x(1), y(1), z
character(len=1000) :: c_input, c_output, tul
type(shpfileobject) :: f_out
type(shpobject) :: o_pont

integer :: i, iosinteger,parameter :: tshp=shpt_point ! pont tipusu shapefile
integer,parameter :: fejlec=1 ! hany sornyi atugrando fejlec van

c_input='pont.txt' ! input file neve
c_output='output' ! output file neve
tul='parameter' ! parameter megnevezese

open(10,file=c_input,iostat=ios,status='old')
   if(ios.ne.0) then
      write(*,*) 'ERR input file nem talalhato'
      write(*,*) trim(c_input)
      call abort
endif

f_out=shpcreate(trim(c_output),tshp) ! shapefile letrehozasa
if(shpfileisnull(f_out).or.(dbffileisnull(f_out))) then
  write(*,*) 'ERR shp letrehozas'
  call abort
endif

ios=dbfaddfield(f_out,'ID',ftinteger,10,0) ! ID a dbf-ben
ios=dbfaddfield(f_out,trim(tul),ftdouble,8,5) ! tulajdonsag F8.5 formatummal tarolva a dbf-ben

do i=1,fejlec
   read(10,*) ! fejlec sorainak atugrasa
enddo
do i=1,nmax
   read(10,*,end=333) x, y, z
   o_pont=shpcreatesimpleobject(tshp,1,x,y) ! pont objektum letrehozasa
   ios=shpwriteobject(f_out,-1,o_pont) ! pont objektum hozzaadasa a shapefilehoz
   call shpdestroyobject(o_pont) ! pont objektum megszuntetese
   ios=dbfwriteattribute(f_out,i-1,0,i) ! ID -> dbf
   ios=dbfwriteattribute(f_out,i-1,1,z) ! tulajdonsag -> dbf
enddo
333   continue
close(10)
call shpclose(f_out)
end program pont2shp

Szerző: MacGyver
Létrehozás: 2013-02-17

Név
E-mail cím
Honlapod címe (ha van)
Hozzászólás
Mennyi három meg három (betűvel)?

eXTReMe Tracker