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
Last revisionBoth sides next revision
project:bioosm:start [2018/08/27 23:04] sachyproject:bioosm:start [2023/05/28 14:58] – make it compatible with Centos 7 sachy
Line 18: Line 18:
 ==== K cemu to je ==== ==== K cemu to je ====
  
-  *  interaktivni mapa vhodna k zobrazovani vetsiho mnozstvi fotek, brmlabi wiki, sluzby typu phtagr a soup se zdaly nevhodne k publikaci tohoto typu obsahu, wiki by byla prilis obludna, na beznych sdilecich obrazkovych sluzbach se neda nic pohodlne dohledavat a davat tam biologicky smysluplne a prehledne popisky +  * interaktivni mapa vhodna k zobrazovani vetsiho mnozstvi fotek, brmlabi wiki, sluzby typu phtagr a soup se zdaly nevhodne k publikaci tohoto typu obsahu, wiki by byla prilis obludna, na beznych sdilecich obrazkovych sluzbach se neda nic pohodlne dohledavat a davat tam biologicky smysluplne a prehledne popisky 
-  *  monitoring zivocichu a rostlin podle zajmu prispevovatelu  +  * monitoring zivocichu a rostlin podle zajmu prispevovatelu  
-  *  snadne klikaci katalogovani nalezu skrze Tellico nevyzadujici coding skills +  * snadne klikaci katalogovani nalezu skrze Tellico nevyzadujici coding skills 
-  *  TODO - jednoduche selekce zajmoveho okruhu subjektu [napr. podle rodu, biotopu, datumu] na mape+  * TODO - jednoduche selekce zajmoveho okruhu subjektu [napr. podle rodu, biotopu, datumu] na mape
   * procvicovani temne magie commandu grep, sed a regexpu   * procvicovani temne magie commandu grep, sed a regexpu
  
Line 31: Line 31:
  
 Pro nadsence je vygenerovany taky prehled prispevku plainlog.htm serazeny dle data pridani do databaze. Pro nadsence je vygenerovany taky prehled prispevku plainlog.htm serazeny dle data pridani do databaze.
 +
 +Pokud chcete vedet co je noveho, odebirejte projektovou [[http://brmlab.s0c4.net/bioosm/bioosm.rss|RSS]]
  
 Obrazky v plnem rozliseni jsou v podadresari "img", nahledy v "simg". Videa jsou nahrana na YT a misto nahledu maji generickou ikonu. Obrazky v plnem rozliseni jsou v podadresari "img", nahledy v "simg". Videa jsou nahrana na YT a misto nahledu maji generickou ikonu.
Line 103: 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 +# Print result to /json/*.json
-+
-# find ./ -type f -exec mogrify -verbose -layers Dispose -resize 128\>x128\> -quality 100% {} + +
-+
-# // vectorLayer.removeFeatures(atol) +
-// map.removeLayer(vectorLayer) +
-#+
 # #
 # Creates: # Creates:
-#   (to stdout) index.htm file with the map and static entries+#   (to stdout) HTML file with the map and static entries
 #   ./det/ID.htm details of each and every entry #   ./det/ID.htm details of each and every entry
 +#   ./bioosm.json JSON of all entries
 +#   ./bioosm.rss updated RSS feed
 +#   ./plainlog.htm sorted entries for easy human/alg
 # #
 +
 +
  
 rm -rfv "./det/*" rm -rfv "./det/*"
Line 129: Line 130:
  
 json="" json=""
 +geojson=""
 +
 +rss=$'<?xml version="1.0" encoding="UTF-8" ?>\n'
 +rss+=$'<rss version="2.0">\n'
 +rss+=$'<channel>\n'
 +rss+=$'<title>Brmlab BioOSM RSS feed</title>\n'
 +rss+=$'<description>New entries in the BioOSM database</description>\n'
 +rss+=$'<link>https://bioosm.s0c4.net</link>\n'
 +rss+=$'<lastBuildDate></lastBuildDate>\n'
 +rss+=$'<pubDate></pubDate>\n'
 +rss+=$'<ttl>86400</ttl>\n'
 +
 +# 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"
 +}
  
 # Return icon by Regnum # Return icon by Regnum
Line 151: Line 184:
  
 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 158: Line 224:
 # !!! 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 () {
Line 170: Line 236:
  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')
 +
 + #>&2 echo "$co - $har - $den - $dur - $lor - $lrl - $lov - $elv"
 + #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"+ >&2 echo -e "\033[31m $lid KDEX '$kde' '$co' \033[0m" 
 + >&2 echo -e "\033[31m $lid RADEK '$radek' \033[0m"
  continue;  continue;
  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 
 + >&2 echo -e "\033[31m $lid OBR $odkurvenyobr $co\033[0m
 + continue; 
 + fi
  fi  fi
 + obr=$(safehtml "$obr")
  
  if [[ "$spe" = "sp." ]]; then  if [[ "$spe" = "sp." ]]; then
Line 237: Line 335:
  fi  fi
  
- json="$json{+ povr="" 
- json="$json \"qualis\":\"$co\"," + povs="" 
- json="$json \"imperium\":\"$imp\"," + pov="" 
- json="$json \"regnum\":\"$reg\"," + if [[ "$phy" = "Platyhelminthes" ]]; then 
- json="$json \"phylum\":\"$phy\"," + povr=$(cat "./povodi_r.json" | ./povodi.py "$kdey" "$kdex"
- json="$json \"classis\":\"$cla\"," + #povrf=$(echo "$povr" | grep -oPe '^[^ ]*' | tr 'e' 'E'
- json="$json \"ordo\":\"$ord\"," + povrf=$(echo "$povr" | sed -e 's/ .*$//g' | tr 'e' 'E'
- json="$json \"familia\":\"$fam\"," + povrn=$(echo "$povr" | sed -e 's/^[^ ]* //g'
- json="$json \"genus\":\"$gen\"," + povs=$(cat "./povodi_s.json" | ./povodi.py "$kdey" "$kdex"
- json="$json \"specie\":\"$spe\"," + #povsf=$(echo "$povs" | grep -oPe '^[^ ]*' | tr 'e' 'E'
- json="$json \"locus\":\"$kde\"," + povsf=$(echo "$povs" | sed -e 's/ .*$//g' | tr 'e' 'E'
- json="$json \"x\":\"$kdex\"," + povsn=$(echo "$povs" | sed -e 's/^[^ ]* //g'
- json="$json \"y\":\"$kdey\"," + if (( $(echo "$povsf < $povrf" | bc -l) )) ; then 
- json="$json \"locplain\":\"$loc\"," + pov="$povsn - $povrn" 
- json="$json \"depictio\":\"$des\"," + else 
- json="$json \"quando\":\"$kdy\"," + pov="$povrn" 
- json="$json \"obr\":\"$obr\"," + fi 
- json="$json \"micro\":\"$skop\"," + fi 
- json="$json \"microtyp\":\"$skop_typ\"," + 
- json="$json \"vid\":\"$vid\"," + if [[ "$cls" "" ]]; then 
- json="$json \"bio\":\"$bio\"," + cls=0 
- json="$json \"amp\":\"$eng\"," + fi 
- json="$json \"spec\":\"$obs\"," + 
- json="$json \"detid\":\"$detid\"," + if [[ "$mpi" = "" ]]; then 
- json="$json \"lnk\":\"$lnk\""Lastone without ',' + mpi="" 
- json="$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+=$'  <title>'"$co"$'</title>\n' 
 + rss+=$'  <description>'"$des"$'</description>\n' 
 + rss+=$'  <link>http://brmlab.s0c4.net/bioosm/det/'"$detid"$'.htm</link>\n' 
 + rss+=$'  <guid isPermaLink="false">'"$detid"$'</guid>\n' 
 + rss+=$'  <pubDate>'"$kdy"$'</pubDate>\n' 
 + rss+=$'</item>\n'
  
  
Line 268: Line 424:
  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  fi
- detpg="$detpg<br>"+ if [[ "$kar" != "" ]]; then 
 + detpg+="<b>Karyotype:</b> $kar<br>" 
 + fi 
 + 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</td><td style='min-width:66%'>"+ 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'>" 
  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"
  
  # Plain log of entries  # Plain log of entries
- datelog="$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"+ >&2 echo -e "\033[32m$lid $co $obs\033[0m"
  
  ox="$kdex"  ox="$kdex"
Line 352: Line 583:
  
  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+=$'</rss>\n' 
 + 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>'
Line 376: Line 610:
 echo '<body>' echo '<body>'
 # Generate select # Generate select
-echo "<div id='plainlog'><b><a href='./plainlog.htm'>Plaintext 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>" 
 +echo "<h1 id='title'>BioOSM - creatures around us</h1>" 
 ksel="<select id='reg' onChange='genphy()'>" ksel="<select id='reg' onChange='genphy()'>"
 ksel="$ksel<option value='ALL' selected>ALL</option>" ksel="$ksel<option value='ALL' selected>ALL</option>"
Line 384: Line 620:
 done <<< $(echo "$kingdoms") done <<< $(echo "$kingdoms")
 ksel="$ksel</select>" ksel="$ksel</select>"
-echo "Regnum: $ksel " +echo "Kingdom: $ksel "
 echo "Phylum: <select id='phy' onChange='gencla()'><option>ALL</option></select> " echo "Phylum: <select id='phy' onChange='gencla()'><option>ALL</option></select> "
-echo "Classis: <select id='cla' onChange='genord()'><option>ALL</option></select>+echo "Class: <select id='cla' onChange='genord()'><option>ALL</option></select>
-echo "Ordo: <select id='ord' onChange='genfam()'><option>ALL</option></select>+echo "Order: <select id='ord' onChange='genfam()'><option>ALL</option></select>
-echo "Familia: <select id='fam' onChange='gengen()'><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 "Genus: <select id='gen' onChange='genspe()'><option>ALL</option></select>"
-echo "Specie: <select id='spe' onChange='armageddon()'><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 "<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 "<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 "<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 $(obioosm "" "" "")
-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 "</body>"
  
 echo "<script>" echo "<script>"
 +echo 'document.getElementById("zavinacvmejlu").innerHTML="@";'
 echo 'map = new OpenLayers.Map("map");' echo 'map = new OpenLayers.Map("map");'
 echo 'map.addLayer(new OpenLayers.Layer.OSM());' echo 'map.addLayer(new OpenLayers.Layer.OSM());'
Line 421: Line 659:
 echo "map.addLayer(vectorLayer);" echo "map.addLayer(vectorLayer);"
  
-spagety "$praseTC" "ALL" "$ICON_biohazard" 
  
 +
 +# Parse Tellico file to get list of entries
 +granty=$(unzip -p "$1" tellico.xml | grep "<grant>" | sed -E 's/( )*<(\/)?grant>( )*//g' | sed -E 's/_additional$//g' | sort -u | grep -v "^none$")
 +#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)
 +#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)
 +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)
 +
 +
 +velkyvepr=$(echo "$praseTC" | grep "<strcit-do-mapy>yep</strcit-do-mapy>")
 +spagety "$velkyvepr" "bioosm" "$ICON_biohazard"
 +
 +# VSECHNO i non-public - zakomentuj predchozi "spagety" a odkomunetuj tohle + exit
 +#spagety "$praseTC" "celytraktor" "$ICON_biohazard" # vsechno i non-public
 +#exit
 +
 +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"
 +done <<< $(echo "$granty")
 +
 +#echo -e "$json{}]}"
 echo '</script>' echo '</script>'
 echo '<script src="./bioosm.js"></script>' # Must be after JSON echo '<script src="./bioosm.js"></script>' # Must be after JSON
Line 429: Line 689:
 # Create plaintext log # Create plaintext log
 dateloghtm="<html><head>" dateloghtm="<html><head>"
-dateloghtm="$dateloghtm<meta http-equiv='Content-Type' content='text/html; charset=utf-8'>" +dateloghtm+="<meta http-equiv='Content-Type' content='text/html; charset=utf-8'>" 
-dateloghtm="$dateloghtm<link rel='stylesheet' href='./style.css' type='text/css'>" +dateloghtm+="<link rel='stylesheet' href='./style.css' type='text/css'>" 
-dateloghtm="$dateloghtm<title>Brmlab - BioOSM plaintext log</title>" +dateloghtm+="<title>Brmlab - BioOSM plaintext log</title>" 
-dateloghtm="$dateloghtm</head><body>"+dateloghtm+="</head><body>"
 datelogsort=$(echo -e "$datelog" | sort -r | uniq) datelogsort=$(echo -e "$datelog" | sort -r | uniq)
-dateloghtm="$dateloghtm $datelogsort" +dateloghtm+="$datelogsort" 
-dateloghtm="$dateloghtm</body></html>"+dateloghtm+="</body></html>"
 echo "$dateloghtm" > "./plainlog.htm" echo "$dateloghtm" > "./plainlog.htm"
 </code> </code>
Line 442: Line 702:
  
 <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/); 
 + if(pus) 
 + plostenkoidy(); 
 + else 
 + // Else initial load 
 + armageddon() 
 +
 +
 + request.open("GET",url,true); 
 + request.send(); 
 +
 +wat=document.URL.match(/(index.htm)|(bioosm\/$)/); 
 +if(wat) 
 + 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 464: Line 766:
 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 getJSONcsop21()
 +{
 + url="./CSOP_122123.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;
 + armageddon()
 + }
 + }
 + request.open("GET",url,true);
 + request.send();
 +}
 +function getJSONcsop22()
 +{
 + url="./CSOP_122210.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;
 + armageddon()
 + }
 + }
 + request.open("GET",url,true);
 + request.send();
 +}
 +function getJSONexfissgtig()
 +{
 + url="./none_exfiss_gtig.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;
 + armageddon()
 + }
 + }
 + request.open("GET",url,true);
 + request.send();
 +}
 +
 +function getJSONempb22()
 +{
 + url="./EPMB2022.json"; // jo preklep kurva
 + 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;
 + armageddon()
 + }
 + }
 + request.open("GET",url,true);
 + request.send();
 +}
 +
 +function getJSONparas()
 +{
 + url="./parasitology.json"; // jo preklep kurva
 + 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;
 + armageddon()
 + }
 + }
 + request.open("GET",url,true);
 + request.send();
 +}
 +
 +
 +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 480: Line 940:
  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 510: Line 976:
  
  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 537: Line 1003:
  
  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 562: Line 1028:
  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 586: Line 1052:
  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 609: Line 1075:
  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 633: Line 1099:
  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 665: Line 1131:
  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 717: Line 1183:
 { {
  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 733: Line 1199:
 { {
  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 764: Line 1230:
  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 774: Line 1243:
  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 781: Line 1250:
  }  }
  
- 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 807: Line 1292:
  }  }
  
- 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 813: Line 1298:
  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 868: Line 1363:
 } // 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 893: Line 1389:
 } }
  
-// 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.txt · Last modified: 2023/09/21 12:15 by sachy