Ini ialah arahan v.net.steinergrass yang boleh dijalankan dalam penyedia pengehosan percuma OnWorks menggunakan salah satu daripada berbilang stesen kerja dalam talian percuma kami seperti Ubuntu Online, Fedora Online, emulator dalam talian Windows atau emulator dalam talian MAC OS
JADUAL:
NAMA
v.net.steiner - Mencipta pokok Steiner untuk rangkaian dan terminal yang diberikan.
Ambil perhatian bahawa masalah 'Minimum Steiner Tree' ialah NP-hard dan algoritma heuristik digunakan dalam
modul ini supaya hasilnya mungkin suboptimum.
Kata-kata berkaitan
vektor, rangkaian, pokok steiner
SINOPSIS
v.net.steiner
v.net.steiner - membantu
v.net.steiner [-g] input=nama output=nama [jenis_arka=rentetan[,rentetan,...]]
[lapisan_arka=rentetan] [lapisan_nod=rentetan] [lajur=rentetan] terminal_cats=pelbagai
[npoints=integer] [--menimpa] [--membantu] [--kata kerja] [--tenang] [--ui]
Bendera:
-g
Gunakan pengiraan geodesik untuk lokasi longitud-latitud
--tulis ganti
Benarkan fail output untuk menulis ganti fail sedia ada
- membantu
Cetak ringkasan penggunaan
--verbose
Keluaran modul verbose
--senyap
Keluaran modul senyap
--ui
Paksa melancarkan dialog GUI
Parameter:
input=nama [diperlukan]
Nama peta vektor input
Atau sumber data untuk akses OGR langsung
output=nama [diperlukan]
Nama untuk peta vektor keluaran
jenis_arka=rentetan [, rentetan,...]
Jenis arka
Jenis ciri input
Pilihan: garis, sempadan
default: garisan, sempadan
lapisan_arka=rentetan
Lapisan arka
Ciri vektor boleh mempunyai nilai kategori dalam lapisan yang berbeza. Nombor ini menentukan
lapisan mana yang hendak digunakan. Apabila digunakan dengan akses OGR langsung ini ialah nama lapisan.
default: 1
lapisan_nod=rentetan
Lapisan nod (digunakan untuk terminal)
Ciri vektor boleh mempunyai nilai kategori dalam lapisan yang berbeza. Nombor ini menentukan
lapisan mana yang hendak digunakan. Apabila digunakan dengan akses OGR langsung ini ialah nama lapisan.
default: 2
lajur=rentetan
Lajur kos Arcs (untuk kedua-dua arah)
terminal_cats=pelbagai [diperlukan]
Nilai kategori
Kategori mata pada terminal (lapisan ditentukan oleh nlayer)
npoints=integer
Bilangan mata Steiner (-1 untuk semua yang mungkin)
default: -1
DESCRIPTION
v.net.steiner mengira sambungan optimum nod pada rangkaian vektor.
Pokok Steiner digunakan untuk mengira rangkaian vektor kos minimum yang menghubungkan beberapa nombor
nod akhir dalam rangka kerja rangkaian. Contohnya ia boleh digunakan untuk mencari laluan
mengikuti sistem jalan raya yang akan meminimumkan jumlah kabel gentian optik yang diperlukan untuk
menyambungkan beberapa siri pejabat satelit.
Kos mungkin sama ada panjang baris, atau atribut yang disimpan dalam jadual pangkalan data. Atribut ini
nilai diambil sebagai kos keseluruhan segmen, bukan sebagai kos untuk melintasi unit panjang (cth
meter) segmen. Sebagai contoh, jika had laju ialah 100 km/j, kos untuk
merentasi segmen jalan sepanjang 10 km mesti dikira sebagai panjang / kelajuan = 10 km / (100
km/j) = 0.1 j. Disokong adalah penetapan kos untuk kedua-dua arka dan nod. Untuk kawasan, kos
akan dikira mengikut garisan sempadan.
Titik yang mewakili nod mestilah tepat pada nod rangkaian, dan peta vektor input diperlukan
untuk bersedia dengan v.net operasi=sambung.
CONTOH
Pokok Steiner untuk 6 nod digital (Spearfish):
Laluan terpendek, di sepanjang jalan yang belum diperbaiki:
Laluan terpantas, sepanjang lebuh raya:
# Ikan tombak
g.copy vect=roads,myroads
# kami mempunyai 6 lokasi untuk diperuntukkan
gema "1|601653.5|4922869.2|a
2|608284|4923776.6|b
3|601845|4914981.9|c
4|596270|4917456.3|d
5|593330.8|4924096.6|e
6|598005.5|4921439.2|f" | v.in.ascii in=- cat=1 x=2 y=3 out=cents col="cat integer, \
ketepatan berganda timur, ketepatan berganda utara, label varchar(43) "
v.db.pilih pusat
v.pusat kategori op=laporan
# jenis kiraan min maks
# mata 6 1 6
# buat peta garis yang menghubungkan titik ke rangkaian (pada lapisan 2)
v.net myroads points=centers out=myroads_net op=connect thresh=500
# tetapkan kos sebagai masa perjalanan
# cipta kategori unik untuk setiap jalan dalam lapisan 3
v.category in=myroads_net out=myroads_net_time opt=add cat=1 layer=3 type=line
# tambah jadual baharu untuk lapisan 3
v.db.addtable myroads_net_time layer=3 col="cat integer,label varchar(43), ketepatan berganda panjang, ketepatan berganda kelajuan, ketepatan berganda kos"
# salin jenis jalan ke lapisan 3
v.to.db myroads_net_time layer=3 qlayer=1 opt=query qcolumn=label columns=label
# muat naik panjang jalan dalam batu
v.to.db myroads_net_time layer=3 type=line option=length col=length unit=miles
# tetapkan had laju dalam batu / jam
v.db.update myroads_net_time layer=3 col=speed val="5.0"
v.db.update myroads_net_time layer=3 col=speed val="75.0" where="label='interstate'"
v.db.update myroads_net_time layer=3 col=speed val="75.0" where="label='lebuh raya utama, permukaan keras'"
v.db.update myroads_net_time layer=3 col=speed val="50.0" where="label='lebuh raya menengah, permukaan keras'"
v.db.update myroads_net_time layer=3 col=speed val="25.0" where="label='jalan ringan, permukaan bertambah baik'"
v.db.kemas kini lapisan myroads_net_time=3 col=speed val="5.0" where="label='jalan tidak diperbaiki'"
# takrifkan kos perjalanan sebagai masa perjalanan dalam beberapa minit:
v.db.update myroads_net_time layer=3 col=cost val="panjang / kelajuan * 60"
# laluan terpendek
v.net.steiner myroads_net_time arc_layer=3 node_layer=2 terminal_cats=1-6 out=mysteiner_distance
# laluan terpantas
v.net.steiner myroads_net_time arc_layer=3 node_layer=2 acol=cost terminal_cats=1-6 out=mysteiner_time
Untuk memaparkan hasilnya, jalankan sebagai contoh:
# paparkan keputusan
g.region vector=myroads_net
# laluan terpendek
d.mon x0
d.vect myroads_net
d.vect -c centers icon=asas/segi tiga
d.font Vera
d.vect centers col=red disp=attr attrcol=label lsize=12
d.vect mysteiner_distance col=blue width=2
# laluan terpantas
d.mon x1
d.vect myroads_net
d.vect -c centers icon=asas/segi tiga
d.font Vera
d.vect centers col=red disp=attr attrcol=label lsize=12
d.vect mysteiner_time col=blue width=2
Gunakan v.net.steinergrass dalam talian menggunakan perkhidmatan onworks.net