User Tools

Site Tools


project:bioosm:start

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
project:bioosm:start [2018/11/24 19:24] – implementace RSS sachyproject:bioosm:start [2023/09/21 12:15] (current) – render terminal/html escapes sachy
Line 105: Line 105:
 # Parse Tellico database to BioOSM index.htm # Parse Tellico database to BioOSM index.htm
 # $1 = tellico .tc file # $1 = tellico .tc file
-Print result to stdout+$2 = "" terminal stderr (default) 
 +#    = "html" html marked stderr (for web bioosm)
 # #
-find .-type f -exec mogrify -verbose -layers Dispose -resize 128\>x128\> -quality 100% {} ++Print result to /jsonrss/*.json
 # #
 +# find ./ -type f -name '*.jpg' -newermt "2023-09-03" -exec mogrify -verbose -layers Dispose -resize 1600\>x1600\> -quality 90% {} +
 +# echo "14.7345 48.7145" | gdallocationinfo -wgs84 ./cesko_big.tiff
 +# gdal_translate -of GTiff -a_srs WGS84 -a_ullr 11.6863 50.9745 19.9876 48.3729 ./source.tif ./result.tif
 +# https://data.geus.dk/egdi/#baslay=baseMapGEUS&extent=3953440,2399890,4757540,2763830&layers=igme5000
 +
 +#bnds=new OpenLayers.Bounds(11.6863000,48.3729000 ,19.9876000,50.9745000);
 +#var geoimg = new OpenLayers.Layer.Image("geo","https://brmlab.s0c4.net/bioosm/eusr5000_600dpi_cesko.png", bnds,bnds.getSize(),{numZoomLevels: 20,isBaseLayer:false});
 +#map.addLayer(geoimg);
 +
 +
 +#
 +# <iframe width="500" height="500" frameborder="0" scrolling="no" marginheight="0" marginwidth="0" src="https://www.openstreetmap.org/export/embed.html?bbox=14.978000%2C49.990000%2C15.022000%2C50.010000&amp;layer=mapnik&amp;marker=50.000000%2C15.000000"></iframe>
 # // vectorLayer.removeFeatures(atol) # // vectorLayer.removeFeatures(atol)
 # // map.removeLayer(vectorLayer) # // map.removeLayer(vectorLayer)
Line 120: Line 133:
 #   ./plainlog.htm sorted entries for easy human/alg #   ./plainlog.htm sorted entries for easy human/alg
 # #
 +
 +
  
 rm -rfv "./det/*" rm -rfv "./det/*"
Line 134: Line 149:
  
 json="" json=""
 +geojson=""
  
 rss=$'<?xml version="1.0" encoding="UTF-8" ?>\n' rss=$'<?xml version="1.0" encoding="UTF-8" ?>\n'
Line 139: Line 155:
 rss+=$'<channel>\n' rss+=$'<channel>\n'
 rss+=$'<title>Brmlab BioOSM RSS feed</title>\n' rss+=$'<title>Brmlab BioOSM RSS feed</title>\n'
-rss+=$'<description>New entries on BioOSM database</description>\n'+rss+=$'<description>New entries in the BioOSM database</description>\n'
 rss+=$'<link>https://bioosm.s0c4.net</link>\n' rss+=$'<link>https://bioosm.s0c4.net</link>\n'
 rss+=$'<lastBuildDate></lastBuildDate>\n' rss+=$'<lastBuildDate></lastBuildDate>\n'
 rss+=$'<pubDate></pubDate>\n' rss+=$'<pubDate></pubDate>\n'
 rss+=$'<ttl>86400</ttl>\n' rss+=$'<ttl>86400</ttl>\n'
 +
 +errhtml="$2"
 +
 +# paticka (co, rok, odkaz)
 +function obioosm () {
 + r="<div id='obioosm'><p>Welcome to BioOSM! This site is owned and maintained by members of the <a href='https://brmlab.cz' target='_blank'>hackerspace brmlab</a>. See our wiki page for further <a href='https://brmlab.cz/project/bioosm/start' target='_blank'>details</a><br>License: <a href='https://creativecommons.org/licenses/by-nc-nd/4.0/' target='_blank'>CC BY-NC-ND</a>. In case you have any questions, suggestions, please let us know at bioosm<span id='zavinacvmejlu'></span>s0c4.net.</p><p>To cite any material (including images) in your publication, please use following format: <br><i>Plskova, K., Sacha, M., brmlab. BioOSM"
 + if [[ "$1" != "" ]]; then
 + r+=" - $1"
 + fi
 + r+=". "
 + if [[ "$2" != "" ]]; then
 + r+="$2. "
 + else
 + r+="2023. "
 + fi
 + if [[ "$3" != "" ]]; then
 + r+="$3"
 + else
 + r+="https://bioosm.s0c4.net"
 + fi
 + r+="</i></p></div>"
 + echo "$r"
 +}
 +
 +# HTML fajl per project
 +function genhtml() {
 + o=$(obioosm "$1" "" "" | sed -e 's/\//\\\//g') # make "\/" from "/" so sed below is OK
 + h=$(cat "./__BIOVZOR__.htm" | sed -e "s/__BIOVZOR_TIT__/$1/g" | sed -e "s/__BIOVZOR_CPRT__/$o/g" | sed -e "s/__BIOVZOR_J__/$1/g")
 + echo "$h" > "./jsonrss/$1.htm"
 + echo "*** $1 done ***"
 +}
  
 # Return icon by Regnum # Return icon by Regnum
Line 166: Line 213:
  
 function safehtml () { function safehtml () {
- echo "$1" | sed -e "s/'/\&#39;/g" -e 's/"/\&#34;/g' -e 's/</\&lt;/g' -e 's/>/\&gt;/g' -e 's/^[ ]*//g' -e 's/[ ]*$//g'+ echo "$1" | sed -e 's/#/%23/g' -e "s/'/\&#39;/g" -e 's/"/\&#34;/g' -e 's/</\&lt;/g' -e 's/>/\&gt;/g' -e 's/^[ ]*//g' -e 's/[ ]*$//g' 
 +
 + 
 +function getgeo () { 
 + #g=$(echo "$1 $2" | gdallocationinfo -wgs84 ./geo/eusr5000_600dpi_cesko_8b_geo.tif | grep -v 255 | grep -oPe '[0-9]+$'
 + g=$(echo "$1 $2" | gdallocationinfo -wgs84 ./geo/eusr5000_600dpi_cesko_8b_geo.tif | grep -v 255 | grep -oE '[0-9]+$'
 + case "$g" in 
 + "1"
 + echo "Fluvial deposits, sediments";; 
 + "128"
 + echo "Weathering residues of different rocks, loess";; 
 + "130"
 + echo "Volcanic rocks";; 
 + "133"
 + echo "Igneous and metamorphic rocks, Palaeozoic sedimentary rocks, loess";; 
 + "143"
 + echo "Loess, igneous and metamorphic rocks";; 
 + "144"
 + echo "Loess, Cretaceous sandstone and marl";; 
 + "147"
 + echo "Igneous, metamorphic and Palaeozoic sedimentary rocks, loess";; 
 + "148"
 + echo "Igneous and metamorphic rocks, loess";; 
 + "149"
 + echo "Igneous and metamorphic rocks, Palaeozoic sedimentary rocks, loess";; # asi fakt stejny jako 133 omg 
 + "150"
 + echo "Igneous and metamorphic rocks, palaeozoic sedimentary rocks";; 
 + "153"
 + echo "Sandy and loamy loess, Tertiary sediments, fluvial deposits";; 
 + "205"
 + echo "Cretaceous and Tertiary flysch, marl, sandstone, limestone";; 
 + *) 
 + echo "";; 
 + esac
 } }
  
Line 173: Line 253:
 # !!! BEZ ODSAZENI !!! # !!! BEZ ODSAZENI !!!
 # $1 = list of entries # $1 = list of entries
-# $2 = layer name+# $2 = layer name = JSON filename without suffix
 # $3 = icon of the points # $3 = icon of the points
 function spagety () { function spagety () {
 +
 + if [[ "$errhtml" == "" ]]; then
 + >&2 echo "===== $2 ====="
 + else
 + >&2 echo "<h2>$2</h2>"
 + fi
  
  bylo="" # Minula pozice  bylo="" # Minula pozice
Line 185: Line 271:
  oy="" # Old Y  oy="" # Old Y
  datelog="" # Entries sorted by date for plaintext log  datelog="" # Entries sorted by date for plaintext log
- json="var data='{\"version\":\"$(date --rfc-3339=seconds)\",\"arma\":["+ json="var data='{\"version\":\"$(date --rfc-3339=seconds)\",\"fund\":\"$2\",\"arma\":[" 
 + geojson='{"type":"FeatureCollection","version":"BIOOSM_' 
 + geojson+="$(date --rfc-3339=seconds)" 
 + geojson+='","features":['
  
  while IFS='' read -r radek || [[ -n "$radek" ]]; do  while IFS='' read -r radek || [[ -n "$radek" ]]; do
- co=$(echo "$radek"grep -oe ' <title>.*</title> ' | sed -E 's/( )*<(\/)?title>( )*//g')+ if [[ "$radek" = "" ]]; then 
 + continue; 
 + fi 
 + 
 + entryid=$(echo "$radek"sed -'s/^.*<entry id="([0-9]+)">.*$/\1/g;t;d'
 + co=$(echo "$radek" | sed -E 's/^.*<title>(.*)<\/title>.*$/\1/g;t;d')
  co=$(safehtml "$co")  co=$(safehtml "$co")
- obr=$(echo "$radek"grep -oe ' <image>.*</image> ' | sed -E 's/( )*<(\/)?image>( )*//g' | grep -oPe '[^/]*$'+ obr=$(echo "$radek"sed -'s/^.*<image>(.*)<\/image>.*$/\1/g;t;d' | sed -E 's/^.*\///g'
- obr=$(safehtml "$obr"+ kde=$(echo "$radek"sed -'s/^.*<locality>(.*)<\/locality>.*$/\1/g;t;d')
- kde=$(echo "$radek"grep -oe '<locality>.*</locality>' | grep -oPe '[0-9]{2}\.[0-9]{1,10}[, ]*[0-9]{2}\.[0-9]{1,10}')+
  kde=$(safehtml "$kde")  kde=$(safehtml "$kde")
- kdex=$(echo "$kde"grep -oPe '[0-9]{2}\.[0-9]{1,10}$') + kdex=$(echo "$kde"sed -'s/^[0-9]+\.[0-9]+[]*//g;t;d'# keep second part 
- kdex=$(safehtml "$kdex") + kdey=$(echo "$kde"sed -'s/[, ]*[0-9]+\.[0-9]+$//g;t;d'# keep first part 
- kdey=$(echo "$kde"grep -oPe '^[0-9]{2}\.[0-9]{1,10}') + kdy=$(echo "$radek"sed -'s/^.*<taken-date>(.*)<\/taken-date>.*$/\1/g;t;d' | sed -E 's/([0-9]+)\.([0-9]+)\.([0-9]{4})/\3-\2-\1/g' | sed -E 's/-([0-9])-/-0\1-/g' | sed -E 's/-([0-9])$/-0\1/g')
- kdey=$(safehtml "$kdey") +
- kdy=$(echo "$radek"grep -oe <taken-date>.*</taken-date> ' | sed -E 's/( )*<(\/)?taken-date>( )*//g' | sed -E 's/([0-9]+)\.([0-9]+)\.([0-9]{4})/\3-\2-\1/g' | sed -E 's/-([0-9])-/-0\1-/g' | sed -E 's/-([0-9])$/-0\1/g')+
  kdy=$(safehtml "$kdy")  kdy=$(safehtml "$kdy")
- skop_typ=$(echo "$radek"grep -oe <new-field-1>.*</new-field-1> ' | sed -E 's/( )*<(\/)?new-field-1>( )*//g')+ skop_typ=$(echo "$radek"sed -'s/^.*<new-field-1>(.*)<\/new-field-1>.*$/\1/g;t;d')
  skop_typ=$(safehtml "$skop_typ")  skop_typ=$(safehtml "$skop_typ")
- skop=$(echo "$radek"grep -oe <microscope>.*</microscope> ' | sed -E 's/( )*<(\/)?microscope>( )*//g')+ skop=$(echo "$radek"sed -'s/^.*<microscope>(.*)<\/microscope>.*$/\1/g;t;d')
  skop=$(safehtml "$skop")  skop=$(safehtml "$skop")
- imp=$(echo "$radek"grep -oe <new-field-3>.*</new-field-3> ' | sed -E 's/)*<(\/)?new-field-3>( )*//g')+ imp=$(echo "$radek"sed -'s/^.*<new-field-3>(.*)<\/new-field-3>.*$/\1/g;t;d')
  imp=$(safehtml "$imp")  imp=$(safehtml "$imp")
- reg=$(echo "$radek"grep -oe <new-field-4>.*</new-field-4> ' | sed -E 's/)*<(\/)?new-field-4>( )*//g')+ reg=$(echo "$radek"sed -'s/^.*<new-field-4>(.*)<\/new-field-4>.*$/\1/g;t;d')
  reg=$(safehtml "$reg")  reg=$(safehtml "$reg")
- phy=$(echo "$radek"grep -oe <phylum>.*</phylum> ' | sed -E 's/( )*<(\/)?phylum>( )*//g')+ phy=$(echo "$radek"sed -'s/^.*<phylum>(.*)<\/phylum>.*$/\1/g;t;d')
  phy=$(safehtml "$phy")  phy=$(safehtml "$phy")
- cla=$(echo "$radek"grep -oe <class>.*</class> ' | sed -E 's/( )*<(\/)?class>( )*//g')+ cla=$(echo "$radek"sed -'s/^.*<class>(.*)<\/class>.*$/\1/g;t;d')
  cla=$(safehtml "$cla")  cla=$(safehtml "$cla")
- ord=$(echo "$radek"grep -oe <order>.*</order> ' | sed -E 's/( )*<(\/)?order>( )*//g')+ ord=$(echo "$radek"sed -'s/^.*<order>(.*)<\/order>.*$/\1/g;t;d')
  ord=$(safehtml "$ord")  ord=$(safehtml "$ord")
- fam=$(echo "$radek"grep -oe <family>.*</family> ' | sed -E 's/( )*<(\/)?family>( )*//g')+ fam=$(echo "$radek"sed -'s/^.*<family>(.*)<\/family>.*$/\1/g;t;d')
  fam=$(safehtml "$fam")  fam=$(safehtml "$fam")
- gen=$(echo "$radek"grep -oe <genus>.*</genus> ' | sed -E 's/( )*<(\/)?genus( )*>//g')+ gen=$(echo "$radek"sed -'s/^.*<genus>(.*)<\/genus>.*$/\1/g;t;d')
  gen=$(safehtml "$gen")  gen=$(safehtml "$gen")
- spe=$(echo "$radek"grep -oe <species>.*</species> ' | sed -E 's/( )*<(\/)?species>( )*//g')+ spe=$(echo "$radek"sed -'s/^.*<species>(.*)<\/species>.*$/\1/g;t;d')
  spe=$(safehtml "$spe")  spe=$(safehtml "$spe")
- loc=$(echo "$radek"grep -oe <locality---plaintext>.*</locality---plaintext> ' | sed -E 's/)*<(\/)?locality---plaintext>( )*//g')+ loc=$(echo "$radek"sed -'s/^.*<locality---plaintext>(.*)<\/locality---plaintext>.*$/\1/g;t;d')
  loc=$(safehtml "$loc")  loc=$(safehtml "$loc")
- des=$(echo "$radek"grep -oe <description>.*</description> ' | sed -E 's/( )*<(\/)?description>( )*//g')+ des=$(echo "$radek"sed -'s/^.*<description>(.*)<\/description>.*$/\1/g;t;d')
  des=$(safehtml "$des")  des=$(safehtml "$des")
- vid=$(echo "$radek"grep -oe <videolink>.*</videolink> ' | sed -E 's/( )*<(\/)?videolink>( )*//g')+ vid=$(echo "$radek"sed -'s/^.*<videolink>(.*)<\/videolink>.*$/\1/g;t;d')
  vid=$(safehtml "$vid")  vid=$(safehtml "$vid")
- bio=$(echo "$radek"grep -oe <biotope>.*</biotope> ' | sed -E 's/( )*<(\/)?biotope>( )*//g')+ bio=$(echo "$radek"sed -'s/^.*<biotope>(.*)<\/biotope>.*$/\1/g;t;d')
  bio=$(safehtml "$bio")  bio=$(safehtml "$bio")
- eng=$(echo "$radek"grep -oe <enlargement>.*</enlargement> ' | sed -E 's/( )*<(\/)?enlargement>( )*//g')+ eng=$(echo "$radek"sed -'s/^.*<enlargement>(.*)<\/enlargement>.*$/\1/g;t;d')
  eng=$(safehtml "$eng")  eng=$(safehtml "$eng")
- obs=$(echo "$radek"grep -oe <observer>.*</observer> ' | sed -E 's/( )*<(\/)?observer>( )*//g')+ obs=$(echo "$radek"sed -'s/^.*<observer>(.*)<\/observer>.*$/\1/g;t;d')
  obs=$(safehtml "$obs")  obs=$(safehtml "$obs")
- lnk=$(echo "$radek"grep -oe <localitylink>.*</localitylink> ' | sed -E 's/( )*<(\/)?localitylink>( )*//g')+ lnk=$(echo "$radek"sed -'s/^.*<localitylink>(.*)<\/localitylink>.*$/\1/g;t;d')
  lnk=$(safehtml "$lnk")  lnk=$(safehtml "$lnk")
 + har=$(echo "$radek" | sed -E 's/^.*<harvesting-method>(.*)<\/harvesting-method>.*$/\1/g;t;d')
 + den=$(echo "$radek" | sed -E 's/^.*<population-density>(.*)<\/population-density>.*$/\1/g;t;d')
 + dur=$(echo "$radek" | sed -E 's/^.*<min>(.*)<\/min>.*$/\1/g;t;d')
 + lor=$(echo "$radek" | sed -E 's/^.*<locality-reference>(.*)<\/locality-reference>.*$/\1/g;t;d')
 + lrl=$(echo "$radek" | sed -E 's/^.*<locality-reference---link>(.*)<\/locality-reference---link>.*$/\1/g;t;d')
 + lov=$(echo "$radek" | sed -E 's/^.*<locality---vobrazek>(.*)<\/locality---vobrazek>.*$/\1/g;t;d' | sed -E 's/^.*\///g')
 + lov=$(safehtml "$lov")
 + cls=$(echo "$radek" | sed -E 's/^.*<cluster>([0-9]*)<\/cluster>.*$/\1/g;t;d')
 + mpi=$(echo "$radek" | grep -oe ' <mainpic>yep</mainpic> ')
 + elv=$(echo "$kdex $kdey" | gdallocationinfo -wgs84 ./elev/cesko_big.tiff | grep "Value" | grep -oe '[0-9]+$')
 + geo=$(getgeo "$kdex" "$kdey")
 + gra=$(echo "$radek" | sed -E 's/^.*<grant>(.*)<\/grant>.*$/\1/g;t;d')
 + tem=$(echo "$radek" | sed -E 's/^.*<temperature>(.*)<\/temperature>.*$/\1/g;t;d')
 + cnd=$(echo "$radek" | sed -E 's/^.*<conductivity>(.*)<\/conductivity>.*$/\1/g;t;d')
 + ph=$(echo "$radek" | sed -E 's/^.*<ph>(.*)<\/ph>.*$/\1/g;t;d')
 + kar=$(echo "$radek" | sed -E 's/^.*<karyotype>(.*)<\/karyotype>.*$/\1/g;t;d')
 + lid=$(echo "$radek" | sed -E 's/^.*<localityid>(.*)<\/localityid>.*$/\1/g;t;d')
 +
 +# if [[ "$errhtml" == "" ]]; then
 +# >&2 echo "$co - $har - $den - $dur - $lor - $lrl - $lov - $elv"
 +# else
 +# >&2 echo "<span class='nok'>$co - $har - $den - $dur - $lor - $lrl - $lov - $elv</span><br>"
 +# fi
 +# continue;
 +
  detid=$(echo "brmlab$co$obr$kde$kdy" | md5sum | grep -oe '[a-zA-Z0-9]*')  detid=$(echo "brmlab$co$obr$kde$kdy" | md5sum | grep -oe '[a-zA-Z0-9]*')
  
  if [[ "$kdex" = "" ]]; then  if [[ "$kdex" = "" ]]; then
- >&2 echo $(echo "$radek" | grep -oe '<locality>.*</locality>'" $co+ if [[ "$errhtml" == "" ]]; then 
- continue;+ >&2 echo -e "\033[31m $lid KDEX '$kde' '$co' \033[0m" 
 + >&echo -e "\033[31m $lid RADEK '$radek' \033[0m" 
 + else 
 + >&2 echo "<span class='nok'>$lid KDEX '$kde' '$co'</span><br>" 
 + >&2 echo "<span class='nok'><pre>$radek</pre></span>
 + fi
  fi  fi
 +
  zkurvenetellico=$(echo "$obr" | grep -oe '\.[a-zA-Z]*$')  zkurvenetellico=$(echo "$obr" | grep -oe '\.[a-zA-Z]*$')
- if [[ "$zkurvenetellico" = ".jpeg" ]]; then + odkurvenyobr=$(echo "$obr" | sed -e 's/%23/#/g'
- >&2 echo "$obr $co" + #if [[ "$zkurvenetellico" = ".jpeg" ]]; then 
- continue;+ if [[ ! -f "./img/$odkurvenyobr" ]]; then 
 + if [[ "$gen" != "negative" ]]; then 
 + if [[ "$errhtml" == "" ]]; then 
 + >&2 echo -e "\033[31m $lid OBR $odkurvenyobr $co\033[0m
 + else 
 + >&2 echo "<span class='nok'>$lid OBR $odkurvenyobr $co</span>" 
 + fi 
 + continue; 
 + fi
  fi  fi
 + obr=$(safehtml "$obr")
  
  if [[ "$spe" = "sp." ]]; then  if [[ "$spe" = "sp." ]]; then
Line 252: Line 383:
  fi  fi
  
- json+="{" + povr="" 
- json+=" \"qualis\":\"$co\"," + povs="" 
- json+=" \"imperium\":\"$imp\"," + pov="" 
- json+=" \"regnum\":\"$reg\"," + if [[ "$phy" = "Platyhelminthes" ]]; then 
- json+=" \"phylum\":\"$phy\"," + povr=$(cat "./povodi_r.json" | ./povodi.py "$kdey" "$kdex"
- json+=" \"classis\":\"$cla\"," + #povrf=$(echo "$povr" | grep -oPe '^[^ ]*' | tr 'e' 'E'
- json+=" \"ordo\":\"$ord\"," + povrf=$(echo "$povr" | sed -e 's/ .*$//g' | tr 'e' 'E'
- json+=" \"familia\":\"$fam\"," + povrn=$(echo "$povr" | sed -e 's/^[^ ]* //g'
- json+=" \"genus\":\"$gen\"," + povs=$(cat "./povodi_s.json" | ./povodi.py "$kdey" "$kdex"
- json+=" \"specie\":\"$spe\"," + #povsf=$(echo "$povs" | grep -oPe '^[^ ]*' | tr 'e' 'E'
- json+=" \"locus\":\"$kde\"," + povsf=$(echo "$povs" | sed -e 's/ .*$//g' | tr 'e' 'E'
- json+=" \"x\":\"$kdex\"," + povsn=$(echo "$povs" | sed -e 's/^[^ ]* //g'
- json+=" \"y\":\"$kdey\"," + if (( $(echo "$povsf < $povrf" | bc -l) )) ; then 
- json+=" \"locplain\":\"$loc\"," + pov="$povsn - $povrn" 
- json+=" \"depictio\":\"$des\"," + else 
- json+=" \"quando\":\"$kdy\"," + pov="$povrn" 
- json+=" \"obr\":\"$obr\"," + fi 
- json+=" \"micro\":\"$skop\"," + fi 
- json+=" \"microtyp\":\"$skop_typ\"," + 
- json+=" \"vid\":\"$vid\"," + if [[ "$cls" = "" ]]; then 
- json+=" \"bio\":\"$bio\"," + cls=0 
- json+=" \"amp\":\"$eng\"," + fi 
- json+=" \"spec\":\"$obs\"," + 
- json+=" \"detid\":\"$detid\"," + if [[ "$mpi" = "" ]]; then 
- json+=" \"lnk\":\"$lnk\""Lastone without ',' + mpi="" 
- json+="},"+ else 
 + mpi="y" 
 + fi 
 + 
 + Tjson="{" 
 + Tjson+=" \"title\":\"$co\"," # qualis 
 + Tjson+=" \"imperium\":\"$imp\"," 
 + Tjson+=" \"regnum\":\"$reg\"," 
 + Tjson+=" \"phylum\":\"$phy\"," 
 + Tjson+=" \"classis\":\"$cla\"," 
 + Tjson+=" \"ordo\":\"$ord\"," 
 + Tjson+=" \"familia\":\"$fam\"," 
 + Tjson+=" \"genus\":\"$gen\"," 
 + Tjson+=" \"specie\":\"$spe\"," 
 + Tjson+=" \"locality\":\"$kde\"," # locus 
 + Tjson+=" \"x\":\"$kdex\"," 
 + Tjson+=" \"y\":\"$kdey\"," 
 + Tjson+=" \"locplain\":\"$loc\"," 
 + Tjson+=" \"description\":\"$des\"," # depictio 
 + Tjson+=" \"takendate\":\"$kdy\"," # quando 
 + Tjson+=" \"obr\":\"$obr\"," 
 + Tjson+=" \"micro\":\"$skop\"," 
 + Tjson+=" \"microtyp\":\"$skop_typ\"," 
 + Tjson+=" \"videolink\":\"$vid\"," # vid 
 + Tjson+=" \"biotope\":\"$bio\"," # bio 
 + Tjson+=" \"enlargement\":\"$eng\"," # amp 
 + Tjson+=" \"observer\":\"$obs\"," # spec 
 + Tjson+=" \"detid\":\"$detid\"," 
 + Tjson+=" \"harvestingmethod\":\"$har\"," # har 
 + Tjson+=" \"populationdensity\":\"$den\"," # den 
 + Tjson+=" \"min\":\"$dur\"," # dur 
 + Tjson+=" \"localityreference\":\"$lor\"," # lor 
 + Tjson+=" \"localityreferencelink\":\"$lrl\"," #lrl 
 + Tjson+=" \"localityvobrazek\":\"$lov\"," # lov 
 + Tjson+=" \"localitylink\":\"$lnk\"," # lnk 
 + Tjson+=" \"cluster\":$cls," # cls 
 + Tjson+=" \"mainpic\":\"$mpi\"," # mpi 
 + Tjson+=" \"pov\":\"$pov\"," 
 + Tjson+=" \"elv\":\"$elv\"," 
 + Tjson+=" \"geo\":\"$geo\"," 
 + Tjson+=" \"temperature\":\"$tem\"," # tem 
 + Tjson+=" \"conductivity\":\"$cnd\"," # cnd 
 + Tjson+=" \"ph\":\"$ph\"," 
 + Tjson+=" \"karyotype\":\"$kar\"" # kar # Last without ',' 
 + Tjson+="}"
  
 + json+="$Tjson,"
 + geojson+='{"type":"Feature","geometry":{"type":"point","coordinates":['
 + geojson+="$kdex,$kdey"
 + geojson+=']},"properties":'
 + geojson+="$Tjson},"
  
  rss+=$'<item>\n'  rss+=$'<item>\n'
Line 292: Line 472:
  detid=$(echo "brmlab$co$obr$kde$kdy" | md5sum | grep -oe '[a-zA-Z0-9]*')  detid=$(echo "brmlab$co$obr$kde$kdy" | md5sum | grep -oe '[a-zA-Z0-9]*')
  detpg="<html><head>"  detpg="<html><head>"
- detpg="$detpg<meta http-equiv='Content-Type' content='text/html; charset=utf-8'>" + detpg+="<meta http-equiv='Content-Type' content='text/html; charset=utf-8'>" 
- detpg="$detpg<link rel='stylesheet' href='../style.css' type='text/css'>" + detpg+="<link rel='stylesheet' href='../style.css' type='text/css'>" 
- detpg="$detpg<title>Brmlab - BioOSM $co $kde</title>" + detpg+="<title>Brmlab - BioOSM $co $kde</title>" 
- detpg="$detpg</head><body>" + 
- detpg="$detpg<table class='dettbl'><tr>" + detpg+="<meta property='og:title' content='BioOSM - $co $kde'>" 
- detpg="$detpg<td><h1>$co (<a href='$wikisp' target='_blank'>wiki</a>)</h1>"+ detpg+="<meta property='og:description' content='$obs found $co and took an image and additional notes.'>" 
 + detpg+="<meta property='og:image' content='https://brmlab.s0c4.net/bioosm/img/$obr'>
 + detpg+="<meta property='og:url' content='https://brmlab.s0c4.net/bioosm/det/$detid.htm'>" 
 + detpg+="<meta name='twitter:card' content='summary_large_image'>" 
 + detpg+="<meta name='og:type' content='website'>" 
 + detpg+="<meta property='og:site_name' content='BioOSM - creatures around us'>" 
 + detpg+="<meta name='twitter:image:alt' content='Image of $co'>" 
 + 
 + detpg+="</head>" 
 + if [[ "$cls" != "0" ]]; then 
 + detpg+="<script src='../bioosmdet.js'></script>" 
 + detpg+="<script>getJSONarma($cls)</script>" 
 + fi 
 + detpg+="<body>" 
 + detpg+="<table class='dettbl'><tr>" 
 + detpg+="<h1>$co (<a href='$wikisp' target='_blank'>wiki</a>)</h1>" 
 + detpg+="<td style='width:33%;vertical-align:top'>"
  if [[ "$imp" != "" ]]; then  if [[ "$imp" != "" ]]; then
- detpg="$detpg<b>Imperium:</b> <a href='https://en.wikipedia.org/wiki/$imp' target='_blank'>$imp</a><br>"+ detpg+="<b>Domain:</b> <a href='https://en.wikipedia.org/wiki/$imp' target='_blank'>$imp</a><br>"
  fi  fi
  if [[ "$reg" != "" ]]; then  if [[ "$reg" != "" ]]; then
- detpg="$detpg<b>Regnum:</b> <a href='https://en.wikipedia.org/wiki/$reg' target='_blank'>$reg</a><br>"+ detpg+="<b>Kingdom:</b> <a href='https://en.wikipedia.org/wiki/$reg' target='_blank'>$reg</a><br>"
  fi  fi
  if [[ "$phy" != "" ]]; then  if [[ "$phy" != "" ]]; then
- detpg="$detpg<b>Phylum:</b> <a href='https://en.wikipedia.org/wiki/$phy' target='_blank'>$phy</a><br>"+ detpg+="<b>Phylum:</b> <a href='https://en.wikipedia.org/wiki/$phy' target='_blank'>$phy</a><br>"
  fi  fi
  if [[ "$cla" != "" ]]; then  if [[ "$cla" != "" ]]; then
- detpg="$detpg<b>Classis:</b> <a href='https://en.wikipedia.org/wiki/$cla' target='_blank'>$cla</a><br>"+ detpg+="<b>Class:</b> <a href='https://en.wikipedia.org/wiki/$cla' target='_blank'>$cla</a><br>"
  fi  fi
  if [[ "$ord" != "" ]]; then  if [[ "$ord" != "" ]]; then
- detpg="$detpg<b>Ordo:</b> <a href='https://en.wikipedia.org/wiki/$ord' target='_blank'>$ord</a><br>"+ detpg+="<b>Order:</b> <a href='https://en.wikipedia.org/wiki/$ord' target='_blank'>$ord</a><br>"
  fi  fi
  if [[ "$fam" != "" ]]; then  if [[ "$fam" != "" ]]; then
- detpg="$detpg<b>Familia:</b> <a href='https://en.wikipedia.org/wiki/$fam' target='_blank'>$fam</a><br>"+ detpg+="<b>Family:</b> <a href='https://en.wikipedia.org/wiki/$fam' target='_blank'>$fam</a><br>"
  fi  fi
  if [[ "$gen" != "" ]]; then  if [[ "$gen" != "" ]]; then
- detpg="$detpg<b>Genus:</b> <a href='https://en.wikipedia.org/wiki/$gen' target='_blank'>$gen</a><br>"+ detpg+="<b>Genus:</b> <a href='https://en.wikipedia.org/wiki/$gen' target='_blank'>$gen</a><br>"
  fi  fi
  if [[ "$spe" != "" ]]; then  if [[ "$spe" != "" ]]; then
- detpg="$detpg<b>Specie:</b> <a href='$wikisp' target='_blank'>$spe</a><br>"+ detpg+="<b>Species:</b> <a href='$wikisp' target='_blank'>$spe</a><br>" 
 + fi 
 + if [[ "$kar" != "" ]]; then 
 + detpg+="<b>Karyotype:</b> $kar<br>"
  fi  fi
- detpg="$detpg<br>"+ detpg+="<br>"
  if [[ "$kdy" != "" ]]; then  if [[ "$kdy" != "" ]]; then
- detpg="$detpg<b>Quando:</b> $kdy<br>"+ detpg+="<b>Date:</b> $kdy<br>"
  fi  fi
  if [[ "$lnk" != "" ]]; then  if [[ "$lnk" != "" ]]; then
  loc="<a href=\"$lnk\" target=\"_blank\">$loc</a>" # Yes, escaped "  loc="<a href=\"$lnk\" target=\"_blank\">$loc</a>" # Yes, escaped "
  fi  fi
- detpg="$detpg<b>Locus:</b> $kde ($loc)<br>"+ detpg+="<b>Place:</b> $kde ($loc)<br>" 
 + if [[ "$elv" != "" ]]; then 
 + detpg+="<b>Elevation:</b> $elv m<br>" 
 + fi 
  if [[ "$obs" != "" ]]; then  if [[ "$obs" != "" ]]; then
- detpg="$detpg<b>Spectator:</b> $obs<br>"+ detpg+="<b>Observer:</b> $obs<br>"
  fi  fi
  if [[ "$bio" != "" ]]; then  if [[ "$bio" != "" ]]; then
- detpg="$detpg<b>Biotope:</b> $bio<br>"+ detpg+="<b>Biotope:</b> $bio<br>"
  fi  fi
- detpg="$detpg<br>"+ if [[ "$pov" != "" ]]; then 
 + detpg+="<b>River:</b> $pov<br>" 
 + fi 
 + if [[ "$geo" != "" ]]; then 
 + detpg+="<b>Bedrock:</b> $geo<br>" 
 + fi 
 + if [[ "$tem" != "" ]]; then 
 + detpg+="<b>Temperature:</b> $tem °C<br>" 
 + fi 
 + if [[ "$cnd" != "" ]]; then 
 + detpg+="<b>Conductivity:</b> $cnd mSv<br>" 
 + fi 
 + if [[ "$ph" != "" ]]; then 
 + detpg+="<b>pH:</b> $ph<br>" 
 + fi 
 + detpg+="<span id='microscopeval'>"
  if [[ "$skop" != "" ]]; then  if [[ "$skop" != "" ]]; then
- detpg="$detpg<b>Microscopium:</b> $skop ($skop_typ)<br>"+ detpg+="<b>Microscope:</b> $skop ($skop_typ)<br>"
  fi  fi
 + detpg+="</span>"
 + detpg+="<span id='ampval'>"
  if [[ "$eng" != "" ]]; then  if [[ "$eng" != "" ]]; then
- detpg="$detpg<b>Amplificatio:</b> $eng<br>" + detpg+="<b>Amplification:</b> $eng<br>"
- fi +
- detpg="$detpg<br>" +
- if [[ "$des" != "" ]]; then +
- detpg="$detpg<b>Depictio:</b> $des<br>"+
  fi  fi
 + detpg+="</span>"
  if [[ "$vid" != "" ]]; then  if [[ "$vid" != "" ]]; then
- detpg="$detpg<b>Video:</b> <a href=\"$vid\" target=\"_blank\">$vid</a><br>"+ detpg+="<b>Video:</b> <a href=\"$vid\" target=\"_blank\">$vid</a><br>"
  fi  fi
- detpg="$detpg<br><b>More on <a href=\"../\">BioOSM map</a></b><br>"+ if [[ "$har" != "" ]]; then 
 + detpg+="<b>Collecting method:</b> $har<br>" 
 + fi 
 + if [[ "$den" != "" ]]; then 
 + detpg+="<b>Individuals found:</b> $den<br>" 
 + fi 
 + if [[ "$dur" != "" ]]; then 
 + detpg+="<b>Duration on stage:</b> $dur<br>" 
 + fi 
 + if [[ "$lrl" != "" ]]; then 
 + detpg+="<b>Locality reference:</b> <a href=\"$lrl\" target=\"_blank\">$lor</a><br>" 
 + elif [[ "$lor" != "" ]]; then 
 + detpg+="<b>Locality reference:</b> $lor<br>" 
 + fi 
 + detpg+="<span id='descval'>" 
 + if [[ "$des" != "" ]]; then 
 + detpg+="<b>Description:</b> $des<br>" 
 + fi 
 + detpg+="</span>" 
 + detpg+="<br><b>More on <a href=\"../\">BioOSM map</a></b><br>" 
 + detpg+="<br>" 
 + 
 + lhx=$(echo "$kdex-0.022" | bc) 
 + lhy=$(echo "$kdey-0.010" | bc) 
 + pdx=$(echo "$kdex+0.022" | bc) 
 + pdy=$(echo "$kdey+0.010" | bc) 
 + detpg+="<iframe id='minimapa' src='https://www.openstreetmap.org/export/embed.html?bbox=$lhx%2C$lhy%2C$pdx%2C$pdy&amp;layer=mapnik&amp;marker=$kdey%2C$kdex'></iframe>" 
 + detpg+="</td><td style='min-width:66%;vertical-align:top'>"
  
- detpg="$detpg</td><td style='min-width:66%'>" 
  if [[ "$obr" != "" ]]; then  if [[ "$obr" != "" ]]; then
- detpg="$detpg<a href=\"../img/$obr\"><img src=\"../img/$obr\" alt=\"$co\" class='detimg'></a>"+ detpg+="<div id='maximatura'><a href=\"../img/$obr\"><img src=\"../img/$obr\" alt=\"$co\" class='detimg'></a></div>" 
 + detpg+="<div id='miniatury'></div>"
  else  else
  if [[ "$vid" != "" ]]; then  if [[ "$vid" != "" ]]; then
  detyt=$(echo "$vid" | sed -e 's/youtube.com\/watch?v=/youtube.com\/embed\//g')  detyt=$(echo "$vid" | sed -e 's/youtube.com\/watch?v=/youtube.com\/embed\//g')
- detpg="$detpg<iframe class='detvid' src='$detyt' frameborder='0' allow='encrypted-media' allowfullscreen></iframe>"+ detpg+="<iframe class='detvid' src='$detyt' frameborder='0' allow='encrypted-media' allowfullscreen></iframe>"
  else  else
- detpg="$detpg<img src=\"../$3\" alt=\"video\" class='detimg'>"+ if [[ "$gen" == "negative" ]]; then 
 + detpg+="<img src=\"../negative.png\" alt=\"Negative observation\" class='detimg'>" 
 + else 
 + detpg+="<img src=\"../$3\" alt=\"video\" class='detimg'>" 
 + fi
  fi  fi
  fi  fi
- detpg="$detpg</td></tr></table>" + if [[ "$lov" != "" ]]; then 
- detpg="$detpg</body></html>"+ detpg+="<img class=\"detimg\" src=\"../lokality/$lov\" alt=\"Locality photo\"><br>" 
 + fi 
 + 
 + detpg+="</td></tr></table>" 
 + detpg+=$(obioosm "$co" "$quando" "https://brmlab.s0c4.net/bioosm/det/$detid.htm"
 + detpg+="</body><script>document.getElementById('zavinacvmejlu').innerHTML='@'</script></html>"
  echo "$detpg" > "./det/$detid.htm"  echo "$detpg" > "./det/$detid.htm"
  
Line 370: Line 623:
  datelog+="$kdy $kde <a href='./det/$detid.htm' target='_blank'>$co</a><br>\n"  datelog+="$kdy $kde <a href='./det/$detid.htm' target='_blank'>$co</a><br>\n"
  
- >&2 echo "$co $obs"+ if [[ "$errhtml" == "" ]]; then 
 + >&2 echo -e "\033[32m$lid $co $obs\033[0m" 
 + else 
 + >&2 echo "<span class='ok'>$lid $co $obs</span>" 
 + fi
  
  ox="$kdex"  ox="$kdex"
Line 378: Line 635:
  
  done <<< $(echo "$1") # Zere parametr spaget, nikoli $1 scriptu !!!  done <<< $(echo "$1") # Zere parametr spaget, nikoli $1 scriptu !!!
- echo "$json{}]}" | sed -e "s/^var data='//g" > "./bioosm.json" + echo -e "$json{}]}" | sed -e "s/^var data='//g" > "./jsonrss/$2.json" 
- echo "$json{}]}'"+# echo -e "$json{}]}'
 + echo -e "$geojson{}]}" > "./jsonrss/geo_$2.geojson"
  
  rss+=$'</channel>\n'  rss+=$'</channel>\n'
  rss+=$'</rss>\n'  rss+=$'</rss>\n'
- echo "$rss" > "./bioosm.rss"+ echo "$rss" > "./jsonrss/$2.rss"
  
 } # KONEC FCE SPAGETY } # KONEC FCE SPAGETY
  
  
- 
-# Parse Tellico file to list of entries 
-praseTC=$(unzip -p "$1" tellico.xml | tr -d '\n' | sed -e $'s/<entry id="/\\\n<entry id="/g' -e $'s/<\/entry>/<\/entry>\\\n/g' | grep -Pe '^<entry id="' | grep "<strcit-do-mapy>yep</strcit-do-mapy>" | sed -E 's/(^.*)(<locality>.*<\/locality>)(.*$)/\2\1\3/' | sort) 
  
 # Sorted unique Kingdoms (to be passed as selection criteria) # Sorted unique Kingdoms (to be passed as selection criteria)
-kingdoms=$(echo "$praseTC" | grep -oe ' <new-field-4>.*</new-field-4> ' | sed -E 's/( )*<(\/)?new-field-4>( )*//g' | sort | uniq)+#kingdoms=$(unzip -p "$1tellico.xml | grep -oe '<new-field-4>.*</new-field-4>' | sed -E 's/( )*<(\/)?new-field-4>( )*//g' | sort | uniq) 
 +kingdoms=$(unzip -p "$1" tellico.xml | sed -E 's/^.*<new-field-4>(.*)<\/new-field-4>.*$/\1/g;t;d' | sort | uniq)
  
-echo '<!DOCTYPE html>' +#echo '<!DOCTYPE html>' 
-echo '<html>' +#echo '<html>' 
-echo '<head>' +#echo '<head>' 
-echo ' <meta http-equiv="Content-Type" content="text/html; charset=utf-8">' +#echo ' <meta http-equiv="Content-Type" content="text/html; charset=utf-8">' 
-echo ' <title>brmlab - BioOSM</title>' +#echo ' <title>brmlab - BioOSM</title>' 
-echo ' <link rel="stylesheet" href="./style.css" type="text/css">' +#echo ' <link rel="stylesheet" href="./style.css" type="text/css">' 
-echo ' <link rel="favicon" href="./'$ICON_biohazard'">' +#echo ' <link rel="favicon" href="./'$ICON_biohazard'">' 
-echo ' <script src="./OpenLayers.js"></script>' +#echo ' <script src="./OpenLayers.js"></script>' 
-echo '</head>' +#echo '</head>' 
-echo '<body>' +#echo '<body>' 
-# Generate select +## Generate select 
-echo "<div id='plainlog'><b><a href='./bioosm.rss'>RSS feed</a><br><a href='./plainlog.htm'>Quick news log</a></b></div>" +#echo "<div id='plainlog'><b><a href='./bioosm.rss'>RSS feed</a><br><a href='./plainlog.htm'>Quick news log</a></b></div>" 
-echo "<h1 id='title'>BioOSM - arma biologica in tuis vicinia</h1>" +##echo "<h1 id='title'>BioOSM - arma biologica in tuis vicinia</h1>" 
-ksel="<select id='reg' onChange='genphy()'>" +#echo "<h1 id='title'>BioOSM - creatures around us</h1>" 
-ksel="$ksel<option value='ALL' selected>ALL</option>" +
-while IFS='' read -r king || [[ -n "$king" ]]; do +#ksel="<select id='reg' onChange='genphy()'>" 
- ksel="$ksel<option value='"$king"'>$king</option>" +#ksel="$ksel<option value='ALL' selected>ALL</option>" 
-done <<< $(echo "$kingdoms"+#while IFS='' read -r king || [[ -n "$king" ]]; do 
-ksel="$ksel</select>" +# ksel="$ksel<option value='"$king"'>$king</option>" 
-echo "Regnum: $ksel "+#done <<< $(echo "$kingdoms"
 +#ksel="$ksel</select>" 
 +#echo "Kingdom: $ksel " 
 +#echo "Phylum: <select id='phy' onChange='gencla()'><option>ALL</option></select>
 +#echo "Class: <select id='cla' onChange='genord()'><option>ALL</option></select>
 +#echo "Order: <select id='ord' onChange='genfam()'><option>ALL</option></select>
 +#echo "Family: <select id='fam' onChange='gengen()'><option>ALL</option></select>
 +#echo "Genus: <select id='gen' onChange='genspe()'><option>ALL</option></select>" 
 +#echo "Species: <select id='spe' onChange='armageddon()'><option>ALL</option></select>" 
 +
 +#echo "<br><input type='button' value='Platyhelminthes' onClick='plostenkoidy()'>" 
 +#echo "<label><input type='checkbox' id='studchecker' onChange='studdrv()'>Springs</label>" 
 +##echo "<input type='button' value='Bugs' onClick='buggy()'>" 
 +#echo "<form style='display:inline;margin-left:5em'><input type='text' length=10 id='srch'><input type='submit' value='&#x1F50D;' onClick='limit();return false;'></form>" 
 +#echo "<br><br><div id='map' class='smallmap'></div>" 
 +#echo $(obioosm "" "" ""
 +#echo "</body>" 
 +
 +#echo "<script>" 
 +#echo 'document.getElementById("zavinacvmejlu").innerHTML="@";' 
 +#echo 'map = new OpenLayers.Map("map");' 
 +#echo 'map.addLayer(new OpenLayers.Layer.OSM());' 
 +#echo 'epsg4326 =  new OpenLayers.Projection("EPSG:4326"); //WGS 1984 projection' 
 +#echo 'projectTo = map.getProjectionObject(); //The map projection (Spherical Mercator)' 
 +#echo 'var lonLat = new OpenLayers.LonLat(15.478, 49.817).transform(epsg4326, projectTo);' 
 +#echo 'var zoom=8;' 
 +#echo 'map.setCenter (lonLat, zoom);' 
 +
 +#echo 'var vectorLayer = new OpenLayers.Layer.Vector("Overlay",{attribution:"<a href=\"http://brmlab.cz\">Brmlab</a>"});' 
 +
 +#echo '// Define markers as "features" of the vector layer:' 
 +
 +#echo 'var atol = new OpenLayers.Feature.Vector(' 
 +#echo ' new OpenLayers.Geometry.Point(14.41876, 50.10554).transform(epsg4326, projectTo),' 
 +#echo ' {description:"Atomovy atol Brmkini"} ,' 
 +#echo ' {externalGraphic: "./biohazard.svg", graphicHeight:8, graphicWidth:8, graphicXOffset:-4, graphicYOffset:-4},' 
 +#echo ');' 
 +#echo 'vectorLayer.addFeatures(atol);' 
 +## Sem prijdou dalsi staticke ficury 
 +#echo "map.addLayer(vectorLayer);" 
 +#
  
-echo "Phylum: <select id='phy' onChange='gencla()'><option>ALL</option></select> " 
-echo "Classis: <select id='cla' onChange='genord()'><option>ALL</option></select> " 
-echo "Ordo: <select id='ord' onChange='genfam()'><option>ALL</option></select> " 
-echo "Familia: <select id='fam' onChange='gengen()'><option>ALL</option></select> " 
-echo "Genus: <select id='gen' onChange='genspe()'><option>ALL</option></select>" 
-echo "Specie: <select id='spe' onChange='armageddon()'><option>ALL</option></select>" 
-echo "<br><input type='button' value='Platyhelminthes' onClick='plostenkoidy()'>" 
-#echo "<input type='button' value='Bugs' onClick='buggy()'>" 
-echo "<br><br><div id='map' class='smallmap'></div>" 
-echo "<br><p>Welcome! You can download the <a href='./bioosm.json' target='_blank'>source data as JSON file</a><br>" 
-echo "This site is owned by members of the <a href='https://brmlab.cz' target='_blank'>hackerspace brmlab</a>. See our wiki page for <a href='https://brmlab.cz/project/bioosm/start' target='_blank'>details and contact info</a><br>License: CC-BY-SA</p>" 
-echo "</body>" 
  
-echo "<script>" +# Parse Tellico file to get list of entries 
-echo 'map = new OpenLayers.Map("map");' +granty=$(unzip -p "$1" tellico.xml | grep "<grant>" | sed -E 's/)*<(\/)?grant>( )*//g' | sed -E 's/_additional$//g' | sort -u | grep -v "^none$") 
-echo 'map.addLayer(new OpenLayers.Layer.OSM());' +#praseTC=$(unzip -p "$1" tellico.xml | tr -d '\n| sed -e $'s/<entry id="/\\\n<entry id="/g' -e $'s/<\/entry>/<\/entry>\\\n/g| grep -Pe '^<entry id="' | grep "<strcit-do-mapy>yep</strcit-do-mapy>" | sed -E 's/(^.*)(<locality>.*<\/locality>)(.*$)/\2\1\3/| sort) 
-echo 'epsg4326  new OpenLayers.Projection("EPSG:4326"); //WGS 1984 projection' +#praseTC=$(unzip -p "$1" tellico.xml | tr -d '\n' | sed -e $'s/<entry id="/\\\n<entry id="/g' -e $'s/<\/entry>/<\/entry>\\\n/g' | grep -Pe '^<entry id="' | sed -E 's/(^.*)(<locality>.*<\/locality>)(.*$)/\2\1\3/| sort) 
-echo 'projectTo map.getProjectionObject(); //The map projection (Spherical Mercator)' +praseTC=$(unzip -p "$1" tellico.xml | tr -d '\n' | sed -e $'s/<entry id="/\\\n<entry id="/g-e $'s/<\/entry>/<\/entry>\\\n/g' | grep -E '^<entry id="' | sed -E 's/(^.*)(<locality>.*<\/locality>)(.*$)/\2\1\3/| sort)
-echo 'var lonLat new OpenLayers.LonLat(15.478, 49.817).transform(epsg4326, projectTo);+
-echo 'var zoom=8;' +
-echo 'map.setCenter (lonLat, zoom);'+
  
-echo 'var vectorLayer = new OpenLayers.Layer.Vector("Overlay",{attribution:"<a href=\"http://brmlab.cz\">Brmlab</a>"});' 
  
-echo '// Define markers as "featuresof the vector layer:'+velkyvepr=$(echo "$praseTC" | grep "<strcit-do-mapy>yep</strcit-do-mapy>"
 +spagety "$velkyvepr" "bioosm" "$ICON_biohazard"
  
-echo 'var atol = new OpenLayers.Feature.Vector(' +# VSECHNO i non-public - zakomentuj predchozi "spagetya odkomunetuj tohle + exit 
-echo ' new OpenLayers.Geometry.Point(14.41876, 50.10554).transform(epsg4326, projectTo),' +#spagety "$praseTC"celytraktor" "$ICON_biohazard" # vsechno i non-public 
-echo ' {description:"Atomovy atol Brmkini"} ,' +#exit
-echo ' {externalGraphic: "./biohazard.svg", graphicHeight:8, graphicWidth:8, graphicXOffset:-4, graphicYOffset:-4},' +
-echo ');' +
-echo 'vectorLayer.addFeatures(atol);' +
-Sem prijdou dalsi staticke ficury +
-echo "map.addLayer(vectorLayer);"+
  
-spagety "$praseTC" "ALL" "$ICON_biohazard"+while IFS='' read -r grnt || [[ -n "$grnt" ]]; do 
 + # 'nope' pokud to ma byt jen na grantstrance ale ne ve velkem bioosm 
 + #vepr=$(echo "$praseTC" | grep -Pe "<strcit-do-mapy>(yep)|(negative)|(nope)</strcit-do-mapy>" | grep -Pe "<grant>$grnt(_additional)?</grant>"
 + vepr=$(echo "$praseTC" | grep -E "<strcit-do-mapy>(yep)|(negative)|(nope)</strcit-do-mapy>" | grep -E "<grant>$grnt(_additional)?</grant>"
 + spagety "$vepr" "$grnt" "$ICON_biohazard" 
 + genhtml "$grnt" 
 +done <<< $(echo "$granty")
  
-echo '</script>' +#if [[ "$errhtml" == "html" ]]; then 
-echo '<script src="./bioosm.js"></script>' # Must be after JSON + >&2 echo "*** DONE ***" 
-echo "</html>"+#fi 
 + 
 + 
 +##echo -e "$json{}]}" 
 +#echo '</script>' 
 +#echo '<script src="./bioosm.js"></script>' # Must be after JSON 
 +#echo "</html>"
  
 # Create plaintext log # Create plaintext log
Line 472: Line 760:
  
 <code javascript bioosm.js> <code javascript bioosm.js>
-var blob=JSON.parse(data+window.blob=JSON.parse('{}')
-var arma=blob.arma+window.arma=null; 
 +// 
 +// MAIN LOAD START HERE 
 +// https://web.archive.org/web/20200502112446/http://dev.openlayers.org/releases/OpenLayers-2.13.1/doc/apidocs/files/OpenLayers-js.html 
 +// 
 +// 
 +function getJSONbioosm() 
 +
 + url="./bioosm.json"; 
 + var request; 
 + if(window.XMLHttpRequest) 
 + request=new XMLHttpRequest(); 
 + else 
 + request=new ActiveXObject("Microsoft.XMLHTTP"); 
 + request.onreadystatechange=function() 
 +
 + if(request.readyState==4) 
 +
 + window.blob=JSON.parse(request.responseText); 
 + window.arma=blob.arma
 + // Display ONLY platyhelminthes if reguired 
 + pus=document.URL.match(/platyhelminthes=understone/); 
 + console.log(pus); 
 + if(pus) 
 + plostenkoidy(); 
 + else 
 + // Else initial load 
 + armageddon() 
 +
 +
 + request.open("GET","./"+ubermaster+".json",true); // defined in html 
 + request.send(); 
 +
 + 
 +getJSONbioosm(); 
 + 
 +var stud=JSON.parse('{}');
  
 var vectorLayerDynamic = new OpenLayers.Layer.Vector('Overlay',{attribution:'<a href="http://brmlab.cz">Brmlab</a>'}); var vectorLayerDynamic = new OpenLayers.Layer.Vector('Overlay',{attribution:'<a href="http://brmlab.cz">Brmlab</a>'});
 +var vectorLayerPonygon = new OpenLayers.Layer.Vector('Overlay',{attribution:'<a href="http://brmlab.cz">Brmlab</a>'});
 +map.addLayer(vectorLayerPonygon);
 map.addLayer(vectorLayerDynamic); map.addLayer(vectorLayerDynamic);
 +//map.setLayerZIndex(vectorLayerDynamic,999);
 +//map.raiseLayer(vectorLayerDynamic,map.layers.length);
 +var studlay = new OpenLayers.Layer.Vector("Overlay",{attribution:"<a href=\"http://brmlab.cz\">Brmlab</a>"}); // studanky
 +map.addLayer(studlay);
  
 var regsel=document.getElementById("reg") var regsel=document.getElementById("reg")
Line 494: Line 824:
 var ICON_protista="protista.png" var ICON_protista="protista.png"
 var ICON_biohazard="biohazard.svg" var ICON_biohazard="biohazard.svg"
 +var ICON_studanka="studanka.png"
 +var ICON_negative="negative.png"
 +
 +
 +function getJSONstud()
 +{
 + url="./stud.json";
 + var request;
 + if(window.XMLHttpRequest)
 + request=new XMLHttpRequest();
 + else
 + request=new ActiveXObject("Microsoft.XMLHTTP");
 + request.onreadystatechange=function()
 + {
 + if(request.readyState==4)
 + {
 + stud=JSON.parse(request.responseText);
 + studdraw(stud);
 + }
 + }
 + request.open("GET",url,true);
 + request.send();
 +}
 +
 +function studdraw(sj)
 +{
 + studlay.destroyFeatures();
 + sjs=stud.std;
 + s=[];
 +
 + for(i=0;i<sjs.length;i++)
 + {
 + s[i] = new OpenLayers.Feature.Vector(new OpenLayers.Geometry.Point(sjs[i].lon,sjs[i].lat).transform(epsg4326,projectTo),{'description':"<table class=\"hadtbl\">"+sjs[i].name+"</table>"},{'externalGraphic':ICON_studanka,'graphicHeight':24,'graphicWidth':24,'graphicXOffset':-12,'graphicYOffset':-12});
 + studlay.addFeatures(s[i]);
 + }
 +}
 +
 +function studdrv()
 +{
 + box=document.getElementById("studchecker");
 + if(box.checked)
 + getJSONstud();
 + else
 + studlay.destroyFeatures();
 +}
  
 // Return icon by Regnum // Return icon by Regnum
 function geticon (a,i) function geticon (a,i)
 { {
 + if(a[i].genus=="negative")
 + return ICON_negative;
 +
 + var p=true;
  var r=""  var r=""
  if(document.getElementById("reg").value!="ALL")  if(document.getElementById("reg").value!="ALL")
 + {
  r=document.getElementById("reg").value  r=document.getElementById("reg").value
 + p=false;
 + }
  else  else
  {  {
  r=a[i].regnum  r=a[i].regnum
- for(var e=i;e>=0 && a[e].locus==a[i].locus;e--)+ for(var e=i;e>=0 && a[e].locality==a[i].locality;e--) 
 +
 + if(a[e].phylum!="Platyhelminthes"
 + p=false;
  if(a[e].regnum!=a[i].regnum)  if(a[e].regnum!=a[i].regnum)
  {  {
Line 510: Line 895:
  break;  break;
  }  }
 + }
  }  }
 +
  
  switch (r)  switch (r)
  {  {
  case "Animalia":  case "Animalia":
 + {
 + if(p)
 + return ICON_plostenkoid;
  return ICON_animalia;  return ICON_animalia;
 + }
  case "Bacteria":  case "Bacteria":
  return ICON_bacteria;  return ICON_bacteria;
Line 540: Line 931:
  
  var phyarr=[]  var phyarr=[]
- for (var i=0;i<arma.length-1;i++)+ for (var i=0;i<window.arma.length-1;i++)
  {  {
- if(regsel.value==arma[i].regnum && arma[i].phynum!=""+ if(regsel.value==window.arma[i].regnum && window.arma[i].phynum!=""
- phyarr.push(arma[i].phylum)+ phyarr.push(window.arma[i].phylum)
  }  }
  phyarr.sort()  phyarr.sort()
Line 567: Line 958:
  
  var claarr=[]  var claarr=[]
- for (var i=0;i<arma.length-1;i++)+ for (var i=0;i<window.arma.length-1;i++)
  {  {
- if(physel.value==arma[i].phylum && arma.classis!=""+ if(physel.value==window.arma[i].phylum && window.arma.classis!=""
- claarr.push(arma[i].classis)+ claarr.push(window.arma[i].classis)
  }  }
  claarr.sort()  claarr.sort()
Line 592: Line 983:
  spesel.innerHTML="<option>ALL</option>"  spesel.innerHTML="<option>ALL</option>"
  var ordarr=[]  var ordarr=[]
- for (var i=0;i<arma.length-1;i++)+ for (var i=0;i<window.arma.length-1;i++)
  {  {
- if(clasel.value==arma[i].classis && arma[i].ordo!=""+ if(clasel.value==window.arma[i].classis && window.arma[i].ordo!=""
- ordarr.push(arma[i].ordo)+ ordarr.push(window.arma[i].ordo)
  }  }
  ordarr.sort()  ordarr.sort()
Line 616: Line 1007:
  spesel.innerHTML="<option>ALL</option>"  spesel.innerHTML="<option>ALL</option>"
  var famarr=[]  var famarr=[]
- for (var i=0;i<arma.length-1;i++)+ for (var i=0;i<window.arma.length-1;i++)
  {  {
- if(ordsel.value==arma[i].ordo && arma[i].familia!=""+ if(ordsel.value==window.arma[i].ordo && window.arma[i].familia!=""
- famarr.push(arma[i].familia)+ famarr.push(window.arma[i].familia)
  }  }
  famarr.sort()  famarr.sort()
Line 639: Line 1030:
  spesel.innerHTML="<option>ALL</option>"  spesel.innerHTML="<option>ALL</option>"
  var genarr=[]  var genarr=[]
- for (var i=0;i<arma.length-1;i++)+ for (var i=0;i<window.arma.length-1;i++)
  {  {
- if(famsel.value==arma[i].familia && arma[i].genus!=""+ if(famsel.value==window.arma[i].familia && window.arma[i].genus!=""
- genarr.push(arma[i].genus)+ genarr.push(window.arma[i].genus)
  }  }
  genarr.sort()  genarr.sort()
Line 663: Line 1054:
  spesel.innerHTML="<option>ALL</option>"  spesel.innerHTML="<option>ALL</option>"
  var spearr=[]  var spearr=[]
- for (var i=0;i<arma.length-1;i++)+ for (var i=0;i<window.arma.length-1;i++)
  {  {
- if(gensel.value==arma[i].genus && arma[i].specie!=""+ if(gensel.value==window.arma[i].genus && window.arma[i].specie!=""
- spearr.push(arma[i].specie)+ spearr.push(window.arma[i].specie)
  }  }
  spearr.sort()  spearr.sort()
Line 684: Line 1075:
 function armageddon() function armageddon()
 { {
 + console.log("a "+window.arma.length);
  var speval=document.getElementById("spe").value  var speval=document.getElementById("spe").value
  var genval=document.getElementById("gen").value  var genval=document.getElementById("gen").value
Line 695: Line 1087:
  if(speval!="ALL")  if(speval!="ALL")
  {  {
- for(var i=0;i<arma.length-1;i++) + for(var i=0;i<window.arma.length-1;i++) 
- if(arma[i].specie==speval && arma[i].genus==genval) // Check genus because of unknown "sp." + if(window.arma[i].specie==speval && window.arma[i].genus==genval) // Check genus because of unknown "sp." 
- a.push(arma[i])+ a.push(window.arma[i])
  }  }
  else if(genval!="ALL")  else if(genval!="ALL")
  {  {
- for(var i=0;i<arma.length-1;i++) + for(var i=0;i<window.arma.length-1;i++) 
- if(arma[i].genus==genval) + if(window.arma[i].genus==genval) 
- a.push(arma[i])+ a.push(window.arma[i])
  }  }
  else if(famval!="ALL")  else if(famval!="ALL")
  {  {
- for(var i=0;i<arma.length-1;i++) + for(var i=0;i<window.arma.length-1;i++) 
- if(arma[i].familia==famval) + if(window.arma[i].familia==famval) 
- a.push(arma[i])+ a.push(window.arma[i])
  }  }
  else if(ordval!="ALL")  else if(ordval!="ALL")
  {  {
- for(var i=0;i<arma.length-1;i++) + for(var i=0;i<window.arma.length-1;i++) 
- if(arma[i].ordo==ordval) + if(window.arma[i].ordo==ordval) 
- a.push(arma[i])+ a.push(window.arma[i])
  }  }
  else if(claval!="ALL")  else if(claval!="ALL")
  {  {
- for(var i=0;i<arma.length-1;i++) + for(var i=0;i<window.arma.length-1;i++) 
- if(arma[i].classis==claval) + if(window.arma[i].classis==claval) 
- a.push(arma[i])+ a.push(window.arma[i])
  }  }
  else if(phyval!="ALL")  else if(phyval!="ALL")
  {  {
- for(var i=0;i<arma.length-1;i++) + for(var i=0;i<window.arma.length-1;i++) 
- if(arma[i].phylum==phyval) + if(window.arma[i].phylum==phyval) 
- a.push(arma[i])+ a.push(window.arma[i])
  }  }
  else if(regval!="ALL")  else if(regval!="ALL")
  {  {
- for(var i=0;i<arma.length-1;i++) + for(var i=0;i<window.arma.length-1;i++) 
- if(arma[i].regnum==regval) + if(window.arma[i].regnum==regval) 
- a.push(arma[i])+ a.push(window.arma[i])
  }  }
  else // Regnum: ALL  else // Regnum: ALL
  {  {
- for(var i=0;i<arma.length-1;i++) + for(var i=0;i<window.arma.length-1;i++) 
- a.push(arma[i])+ a.push(window.arma[i])
  }  }
  
Line 747: Line 1139:
 { {
  var p=[]  var p=[]
- for(var i=0;i<arma.length-1;i++)+ for(var i=0;i<window.arma.length-1;i++)
  {  {
- if(arma[i].regnum==""|| + if(window.arma[i].regnum==""|| 
-      arma[i].phylum==""|| +      window.arma[i].phylum==""|| 
-      arma[i].classis==""|| +      window.arma[i].classis==""|| 
-      arma[i].ordo==""|| +      window.arma[i].ordo==""|| 
-      arma[i].familia==""|| +      window.arma[i].familia==""|| 
-      arma[i].genus==""+      window.arma[i].genus==""
-   p.push(arma[i])+   p.push(window.arma[i])
  }  }
  icongeddon(p)  icongeddon(p)
Line 763: Line 1155:
 { {
  var p=[]  var p=[]
- for(var i=0;i<arma.length-1;i++)+ for(var i=0;i<window.arma.length-1;i++)
  {  {
- if(arma[i].phylum=="Platyhelminthes"+ if(window.arma[i].phylum=="Platyhelminthes"
- p.push(arma[i])+ p.push(window.arma[i])
  }  }
  icongeddon(p)  icongeddon(p)
Line 794: Line 1186:
  for(;i<a.length;i++) // -1 fix for last empty entry  for(;i<a.length;i++) // -1 fix for last empty entry
  {  {
 + if(a[i].cluster!=0&&a[i].mainpic!="y") // show only in gallery, without icon in map
 + continue;
 +
  // Pokracujem v hadovi  // Pokracujem v hadovi
- if(a[i].locus == bylo)+ if(a[i].locality == bylo)
  {  {
  sam="";  sam="";
Line 804: Line 1199:
  else  else
  spoj+='<img src=./"'+ICON_biohazard+'" class="hadimg"></a></td>'  spoj+='<img src=./"'+ICON_biohazard+'" class="hadimg"></a></td>'
- spoj+="<td>"+a[i].qualis+"<br>"+a[i].quando+"</td>"+ spoj+="<td>"+a[i].title+"<br>"+a[i].takendate+"</td>"
  spoj+="</tr>"  spoj+="</tr>"
  ox=a[i].x  ox=a[i].x
Line 811: Line 1206:
  }  }
  
- if(a[i].specie=="sp.") + switch(a[i].specie
- wikisp="https://en.wikipedia.org/wiki/"+a[i].genus +
- else + case "sp.": 
- wikisp="https://en.wikipedia.org/wiki/"+a[i].genus+" "+a[i].specie+
 + wikisp="https://en.wikipedia.org/wiki/"+a[i].genus 
 + break; 
 +
 + case "negative": 
 + case "": 
 +
 + wikisp="https://en.wikipedia.org/wiki/Null_result" 
 + break; 
 +
 + default: 
 +
 + wikisp="https://en.wikipedia.org/wiki/"+a[i].genus+" "+a[i].specie 
 + break; 
 +
 +
  
  // Bud prvni zaznam, nebo zmena pozice  // Bud prvni zaznam, nebo zmena pozice
Line 837: Line 1248:
  }  }
  
- bylo=a[i].locus+ bylo=a[i].locality
  spoj='<tr><td><a href="./det/'+a[i].detid+'.htm" target="_blank">'  spoj='<tr><td><a href="./det/'+a[i].detid+'.htm" target="_blank">'
  if(a[i].obr != "")  if(a[i].obr != "")
Line 843: Line 1254:
  else  else
  spoj+='<img src="./'+geticon(a,i)+'" class="hadimg"</a></td>'  spoj+='<img src="./'+geticon(a,i)+'" class="hadimg"</a></td>'
- spoj+='<td>'+a[i].qualis+'<br>'+a[i].quando+'</td>'+ spoj+='<td>'+a[i].title+'<br>'+a[i].takendate+'</td>'
  spoj+="</tr>"  spoj+="</tr>"
  
- + sam='<a href="./det/'+a[i].detid+'.htm" target="_blank"><img src="'+(a[i].genus=='negative'?ICON_negative:'./simg/'+a[i].obr)+'" alt="'+a[i].title+'" class="buttimg"></a>'
- sam='<a href="./det/'+a[i].detid+'.htm" target="_blank"><img src="./simg/'+a[i].obr+'" alt="'+a[i].qualis+'" class="buttimg"></a>'+
  sam+='<br><span class="butttext">'  sam+='<br><span class="butttext">'
- sam+='<b>Qualis:</b> <a href="'+wikisp+'" target="_blank">'+a[i].qualis+'</a><br>'+ sam+='<a href="'+wikisp+'" target="_blank">'+(a[i].title=="negative"?"Negative observation":a[i].title)+'</a><br>'
  if(a[i].imperium != "")  if(a[i].imperium != "")
- sam+='<b>Imperium:</b> <a href="https://en.wikipedia.org/wiki/'+a[i].imperium+'" target="_blank">'+a[i].imperium+'</a><br>'+ sam+='<b>Domain:</b> <a href="https://en.wikipedia.org/wiki/'+a[i].imperium+'" target="_blank">'+a[i].imperium+'</a><br>'
  if(a[i].regnum != "")  if(a[i].regnum != "")
-    sam+='<b>Regnum:</b> <a href="https://en.wikipedia.org/wiki/'+a[i].regnum+'" target="_blank">'+a[i].regnum+'</a><br>'+    sam+='<b>Kingdom:</b> <a href="https://en.wikipedia.org/wiki/'+a[i].regnum+'" target="_blank">'+a[i].regnum+'</a><br>'
  if(a[i].phylum != "")  if(a[i].phylum != "")
  sam+='<b>Phylum:</b> <a href="https://en.wikipedia.org/wiki/'+a[i].phylum+'" target="_blank">'+a[i].phylum+'</a><br>'  sam+='<b>Phylum:</b> <a href="https://en.wikipedia.org/wiki/'+a[i].phylum+'" target="_blank">'+a[i].phylum+'</a><br>'
  if(a[i].classis != "")  if(a[i].classis != "")
- sam+='<b>Classis:</b> <a href="https://en.wikipedia.org/wiki/'+a[i].classis+'" target="_blank">'+a[i].classis+'</a><br>'+ sam+='<b>Class:</b> <a href="https://en.wikipedia.org/wiki/'+a[i].classis+'" target="_blank">'+a[i].classis+'</a><br>'
  if(a[i].ordo != "")  if(a[i].ordo != "")
- sam+='<b>Ordo:</b> <a href="https://en.wikipedia.org/wiki/'+a[i].ordo+'" target="_blank">'+a[i].ordo+'</a><br>'+ sam+='<b>Order:</b> <a href="https://en.wikipedia.org/wiki/'+a[i].ordo+'" target="_blank">'+a[i].ordo+'</a><br>'
  if(a[i].familia != "")  if(a[i].familia != "")
- sam+='<b>Familia:</b> <a href="https://en.wikipedia.org/wiki/'+a[i].familia+'" target="_blank">'+a[i].familia+'</a><br>' + sam+='<b>Family:</b> <a href="https://en.wikipedia.org/wiki/'+a[i].familia+'" target="_blank">'+a[i].familia+'</a><br>' 
- if(a[i].genus != "")+ if(a[i].genus != "" && a[i].genus!="negative")
  sam+='<b>Genus:</b> <a href="https://en.wikipedia.org/wiki/'+a[i].genus+'" target="_blank">'+a[i].genus+'</a><br>'  sam+='<b>Genus:</b> <a href="https://en.wikipedia.org/wiki/'+a[i].genus+'" target="_blank">'+a[i].genus+'</a><br>'
  if(a[i].specie != "")  if(a[i].specie != "")
- sam+='<b>Specie:</b> <a href="'+wikisp+'" target="_blank">'+a[i].specie+'</a><br>' + sam+='<b>Species:</b> <a href="'+wikisp+'" target="_blank">'+a[i].specie+'</a><br>' 
- if(a[i].bio != ""+ if(a[i].biotope != ""
- sam+="<b>Biotope:</b> "+a[i].bio+"<br>" + sam+="<b>Biotope:</b> "+a[i].biotope+"<br>" 
- if(a[i].quando != ""+ if(a[i].pov != ""
- sam+="<b>Quando:</b> "+a[i].quando+"<br>" + sam+="<b>River:</b> "+a[i].pov+"<br>" 
- sam+="<b>Locus:</b> "+a[i].locus+" ("+a[i].locplain+")<br>" + if(a[i].temperature != ""
- if(a[i].spec != ""+ sam+="<b>Temperature:</b> "+a[i].temperature+" °C<br>" 
-  sam+="<b>Spectator:</b> "+a[i].spec+"<br>"+ if(a[i].pov != ""
 + sam+="<b>Conductivity:</b> "+a[i].conductivity+" mSv<br>" 
 + if(a[i].pov != ""
 + sam+="<b>pH:</b> "+a[i].ph+"<br>" 
 + 
 + 
 + 
 + if(a[i].takendate != ""
 + sam+="<b>Date:</b> "+a[i].takendate+"<br>" 
 + sam+="<b>Location:</b> "+a[i].locality+" ("+a[i].locplain+")<br>" 
 + if(a[i].observer != ""
 +  sam+="<b>Spectator:</b> "+a[i].observer+"<br>"
  if(a[i].micro != "")  if(a[i].micro != "")
- sam+="<b>Microscopium:</b> "+a[i].micro+" ("+a[i].microtyp+")<br>" + sam+="<b>Microscope:</b> "+a[i].micro+" ("+a[i].microtyp+")<br>" 
- if(a[i].amp != ""+ if(a[i].enlargement != ""
- sam+="<b>Amplificatio:</b> "+a[i].amp+"<br>"+ sam+="<b>Amplification:</b> "+a[i].enlargement+"<br>"
  /* if [[ "$des" != "" ]]; then  /* if [[ "$des" != "" ]]; then
  #   sam="$sam<b>Depictio:</b> $des<br>"  #   sam="$sam<b>Depictio:</b> $des<br>"
  # fi */  # fi */
- if(a[i].vid != ""+ //if(a[i].videolink != ""
- sam+='<b>Video:</b> <a href="'+a[i].vid+'" target="_blank">'+a[i].vid+'</a><br>'+ // sam+='<b>Video:</b> <a href="'+a[i].videolink+'" target="_blank">'+a[i].videolink+'</a><br>'
  sam+="</span>"  sam+="</span>"
  
Line 898: Line 1319:
 } // Konec armageddonu } // Konec armageddonu
  
-var laycon = [vectorLayer,vectorLayerDynamic];+//var laycon = [vectorLayer,vectorLayerPonygon,vectorLayerDynamic,studlay]; 
 +var laycon = [vectorLayer,vectorLayerDynamic,studlay];
  
 var controls = {selector: new OpenLayers.Control.SelectFeature(laycon, { onSelect: createPopup, onUnselect: destroyPopup })}; var controls = {selector: new OpenLayers.Control.SelectFeature(laycon, { onSelect: createPopup, onUnselect: destroyPopup })};
Line 923: Line 1345:
 } }
  
-// Run armageddon on initial load + 
-armageddon()+// Vyhledavani 
 +function limit() 
 +
 + srch=document.getElementById("srch").value.toLowerCase(); 
 + var p=[] 
 + for(var i=0;i<window.arma.length-1;i++) 
 +
 + if(window.arma[i].title.toLowerCase().indexOf(srch)>=0|| 
 +    window.arma[i].imperium.toLowerCase().indexOf(srch)>=0|| 
 +    window.arma[i].regnum.toLowerCase().indexOf(srch)>=0|| 
 +    window.arma[i].phylum.toLowerCase().indexOf(srch)>=0|| 
 +    window.arma[i].classis.toLowerCase().indexOf(srch)>=0|| 
 +    window.arma[i].ordo.toLowerCase().indexOf(srch)>=0|| 
 +    window.arma[i].familia.toLowerCase().indexOf(srch)>=0|| 
 +    //window.arma[i].genus.toLowerCase().indexOf(srch)>=0|| // v "qualis" 
 +    //window.arma[i].observerie.toLowerCase().indexOf(srch)>=0|| 
 +    window.arma[i].locplain.toLowerCase().indexOf(srch)>=0|| 
 +    window.arma[i].description.toLowerCase().indexOf(srch)>=0|| 
 +    window.arma[i].takendate.toLowerCase().indexOf(srch)>=0|| 
 +    window.arma[i].micro.toLowerCase().indexOf(srch)>=0|| 
 +    window.arma[i].microtyp.toLowerCase().indexOf(srch)>=0|| 
 +    window.arma[i].biotope.toLowerCase().indexOf(srch)>=0|| 
 +    window.arma[i].pov.toLowerCase().indexOf(srch)>=0) 
 +   p.push(arma[i]) 
 +
 + icongeddon(p) 
 +
 + 
 + 
 +// ====== GEOJSON ====== 
 + 
 +var metageo=JSON.parse("{}"); 
 +var geje=[]; 
 +var gejbarva=""; 
 + 
 +function placegeo(coor,gejbarva) 
 +
 + var geja=new Array; 
 + epsg4326 =  new OpenLayers.Projection("EPSG:4326"); //WGS 1984 projection 
 + projectTo = map.getProjectionObject(); 
 + 
 + for(i=0;i<coor.length;i++) 
 +
 + geja.push(new OpenLayers.Geometry.Point(coor[i][0],coor[i][1]).transform(epsg4326, projectTo)) 
 +
 +/* "default" namespaces work for Layers, not Features 
 + var lajna=new OpenLayers.StyleMap({ 
 +     "default": new OpenLayers.Style({ 
 +        //strokeColor: "#FF0000", 
 +        strokeColor: gejbarva, 
 +        strokeOpacity: 1, 
 +        strokeWidth: 5, 
 +        pointRadius: 6, 
 +     }), 
 +     "select": new OpenLayers.Style({ 
 +       //strokeColor: "#0000FF", 
 +       strokeColor: gejbarva, 
 +       strokeOpacity: 1, 
 +       strokeWidth: 5, 
 +       pointRadius: 6, 
 +     }) 
 + }); */ 
 + var lajna={ // Feature without the namespaces 
 +        strokeColor: gejbarva, 
 +        strokeOpacity: 1, 
 +        strokeWidth: 5, 
 +        pointRadius: 6, 
 + }; 
 + 
 + gejs=new OpenLayers.Geometry.LineString(geja); 
 + vectorLayerPonygon.addFeatures([new OpenLayers.Feature.Vector(gejs,{},lajna)]); 
 +
 + 
 +function getsld(url,s,g) 
 +
 + var request; 
 + if(window.XMLHttpRequest) 
 + request=new XMLHttpRequest(); 
 + else 
 + request=new ActiveXObject("Microsoft.XMLHTTP"); 
 + request.overrideMimeType("text/plain"); 
 + request.onreadystatechange=function() 
 +
 + if(request.readyState==4) 
 +
 + tmpc=request.responseText; 
 + tmpc=tmpc.match(/SvgParameter name="stroke">#[0-9a-fA-F]*<\/se:SvgParameter/)[0].match(/#[0-9a-fA-F]*/)[0]; 
 + getgeo(url,g,tmpc); 
 + //console.log(tmpc); 
 +
 +
 + request.open("GET",url+s,true); 
 + request.send(); 
 +
 + 
 + 
 +function getgeo(url,g,c) 
 +
 + var request; 
 + if(window.XMLHttpRequest) 
 + request=new XMLHttpRequest(); 
 + else 
 + request=new ActiveXObject("Microsoft.XMLHTTP"); 
 + request.overrideMimeType("application/geo+json"); 
 + request.onreadystatechange=function() 
 +
 + if(request.readyState==4) 
 +
 + tmpg=JSON.parse(request.responseText); 
 + for(var e=0;e<tmpg.features.length;e++) 
 +
 + if(typeof tmpg.features[e].properties === 'undefined') // || tmpg.features[e].properties.osm_type!="way"
 + continue; 
 + 
 + for(var i=0;i<tmpg.features[e].geometry.coordinates.length;i++) 
 +
 + for(var j=0;j<tmpg.features[e].geometry.coordinates[i].length;j++) 
 +
 + if(tmpg.features[e].geometry.coordinates[i][j].length<2) 
 + continue; 
 + //console.log(tmpg.features[e].properties.osm_type+" "+tmpg.features[e].geometry.coordinates[i][j].length); 
 + placegeo(tmpg.features[e].geometry.coordinates[i][j],c); 
 +
 +
 +
 +
 +
 + request.open("GET",url+g,true); 
 + request.send(); 
 +
 + 
 +// ENTRY POINT 
 +// parametr je ./ adresar ve kterem je metadata.json S LOMITKEM NA KONCI 
 +function drawgeojson(url) 
 +
 + var request; 
 + if(window.XMLHttpRequest) 
 + request=new XMLHttpRequest(); 
 + else 
 + request=new ActiveXObject("Microsoft.XMLHTTP"); 
 + request.onreadystatechange=function() 
 +
 + if(request.readyState==4) 
 +
 + window.metageo=JSON.parse(request.responseText); 
 + for(var i=0;i<metageo.layers.length;i++) 
 +
 + //console.log(metageo.layers[i].geojson); 
 + getsld(url,metageo.layers[i].sld,metageo.layers[i].geojson) 
 +
 +
 +
 + request.open("GET",url+"metadata.json",true); 
 + request.send(); 
 +
 </code> </code>
  
-==== Taxonomie dle rodoveho jmena ====+==== Springs ====
  
-Script bere jako jediny parametr rodove jmeno z wikipedie vyparsuje zbytek taxonomie+To be able to better plan routes for collecting planarians, the knowledge of locations of springs seems to be important. So BioOSM can show them! Below is script to get the locations from OSM XMLs obtainable from [[http://osm.kyblsoft.cz/archiv/]]. 
-<code bash tax.sh>+ 
 +<code bash studanky.sh>
 #!/bin/bash #!/bin/bash
 +# generate BioOSM compatible "springs"
 +# Usage: studanky.sh osmdump.xml
 +
 +# Download OSM file to be passed as $1
 +# wget "http://osm.kyblsoft.cz/archiv/czech_republic-2019-11-03.osm.gz"
 +# gzip -kd ./czech_republic-2019-11-03.osm.gz
 +#
 +# Pozor ^^ sezere spoustu rameti
 +#
 +
 +osm=$(cat "$1" | sed -e 's/<node/\'$'\a<node/g' -e 's/<\/node>/<\/node\'$'\a/g' -e 's/<way/\'$'\a<way/g' -e 's/<\/way>/<\/way>\'$'\a/g' -e 's/<relation/\'$'\a<relation/g' -e 's/<\/relation>/<\/relation>\'$'\a/g' | tr -d '\n' | tr '\a' '\n' | grep 'v="spring"' | grep 'k="natural"')
 +
 +json='{"version":"'$(date --rfc-3339=seconds)'","std":['
 +
 +while IFS='' read -r spr || [[ -n "$spr" ]]; do
 + n=$(echo "$spr" | grep -oPe 'k="name" v="[^"]*"' | sed -e 's/k="name" v="//g' -e 's/"$//g')
 + lat=$(echo "$spr" | grep -oPe ' lat="[^"]*"' | sed -e 's/ lat="//g' -e 's/"$//g')
 + lon=$(echo "$spr" | grep -oPe ' lon="[^"]*"' | sed -e 's/ lon="//g' -e 's/"$//g')
 +
 + if [ "$lat" = "" ] || [ "$lon" = "" ]; then
 + continue; # <way> a tak
 + fi
 + if [[ "$n" = "" ]]; then
 + n="inkognito"
 + >&2 echo -e "\033[34m $lat $lon \033[0m";
 + fi
 +
 + json+="{"
 + json+=" \"name\":\"$n\","
 + json+=" \"lon\":\"$lon\","
 + json+=" \"lat\":\"$lat\""
 + json+="},"
 +
 + >&2 echo -e "\033[32m $n $lat $lon\033[0m"
 +
 +done <<< $(echo "$osm")
 +
 +echo "$json{}]}"
 +</code>
 +
 +=== LocalityID ===
 +<code bash ajdy.sh>
 +#!/bin/bash
 +
 +T=$(mktemp)
 +unzip -p "$1" tellico.xml | tr -d '\n' | sed -e $'s/<entry id="/\\\n<entry id="/g' -e $'s/<\/entry>/<\/entry>\\\n/g' > "$T"
 +
 +
 +hf=$(cat "$T" | grep -Pe '^<entry id="' | grep '<hasflatworms>yep</hasflatworms>')
 +# nejvyssi dosazene ID
 +mid=$(cat "$T" | grep -Pe '^<entry id="' | grep -oe ' <localityid>.*</localityid> ' | grep -oPe '[0-9]+' | sort | tail -n 1)
 +mid=$(($mid+1))
 +
 +
 +function ll()
 +{
 + while IFS='' read -r r || [[ -n "$r" ]]; do
 + t=$(echo "$r" | grep -oe ' <taken-date>.*</taken-date> ' | sed -E 's/( )*<(\/)?taken-date>( )*//g' | sed -E 's/([0-9]+)\.([0-9]+)\.([0-9]{4})/\3-\2-\1/g' | sed -E 's/-([0-9])-/-0\1-/g' | sed -E 's/-([0-9])$/-0\1/g')
 + l=$(echo "$r" | grep -oe '<locality>.*</locality>' | grep -oPe '[0-9]+\.[0-9]+[, ]*[0-9]+\.[0-9]+')
 + echo "$t@$l"
 + done <<< $(echo "$1")
 +}
 +
 +srt=$(ll "$hf" | sort -u)
 +
 +uid=$mid
 +while IFS='' read -r r || [[ -n "$r" ]]; do
 + l=$(echo "$r" | grep -oPe '@.*$' | tr -d '@')
 + lid=$(cat "$T" | grep  " <locality>$l</locality> " | grep -oe ' <localityid>.*</localityid> ' | grep -oPe '[0-9]+')
 + if [[ "$lid" = "" ]]; then
 +
 + sedexp="s/( <locality>$l<\/locality> .*<hasflatworms>yep<\/hasflatworms> )/ \\1 <localityid>$uid<\/localityid> /g"
 + #echo "$sedexp"
 + sed -E "$sedexp" -i "$T"
 + uid=$(($uid+1))
 + fi
 +done <<< $(echo "$srt")
  
-wat=$(wget -q -O - "https://en.wikipedia.org/wiki/Template:Taxonomy/$12>/dev/null | tr -d '\n' | sed -e $'s/<\/tr>/<\/tr>\\n/g' | grep "<tr>| sed -e 's/<[^>]*>//g' | grep -o -e "^[a-zA-Z]*:[a-zA-Z]*")+D=$(mktemp -d) 
 +cp -f "$T"$D/tellico.xml" 
 +zip -j "./micro_new.tc" "$D/tellico.xml"
  
-echo $(echo "$wat| grep "Domain:") +rm -rfv "$T
-echo $(echo "$wat" | grep "Kingdom:"+rm -rfv "$D"
-echo $(echo "$wat" | grep "Phylum:"+
-echo $(echo "$wat" | grep "Class:"+
-echo $(echo "$wat" | grep "Order:"+
-echo $(echo "$wat" | grep "Family:"+
-echo $(echo "$wat" | grep "Genus:")+
 </code> </code>
project/bioosm/start.1543087469.txt.gz · Last modified: 2018/11/24 19:24 by sachy