Skip to content
Snippets Groups Projects
Commit 38ecf717 authored by ronan.vignard's avatar ronan.vignard
Browse files

Merge branch 'dev' into 'master'

Ajout des templates RMarkdown

See merge request !13
parents c25389aa c6a1faed
Branches
Tags
1 merge request!13Ajout des templates RMarkdown
Pipeline #382105 canceled
Showing
with 1796 additions and 201 deletions
image: rocker/geospatial:latest
variables:
GIT_DEPTH: 10
REPO_NAME: "https://packagemanager.rstudio.com/all/__linux__/focal/latest"
R_LIBS: "ci/lib"
cache:
key: global-cache
paths:
- ${R_LIBS}
stages:
- build
- pkgdown
- pkgdown-move
- deploy
building:
stage: build
script:
- apt-get update -qq && apt-get install -y libharfbuzz-dev libfribidi-dev
- echo "Library path for packages :" $R_LIBS
- mkdir -p $R_LIBS
- Rscript -e 'install.packages("remotes")'
- Rscript -e 'install.packages("rcmdcheck")'
- Rscript -e 'remotes::install_local(upgrade = "never")'
- Rscript -e 'remotes::install_git("https://gitlab-forge.din.developpement-durable.gouv.fr/dreal-pdl/csd/data.nitrates.git")'
- R -e 'rcmdcheck::rcmdcheck(args = c("--no-manual"), error_on = "warning", check_dir = "check")'
- ls -la
- mkdir -p public
- ls -la public
- ls -la $R_LIBS
integration:
stage: pkgdown
allow_failure: true
when: on_success
only:
- main
script:
- Rscript -e 'remotes::install_cran(c("pkgdown"), upgrade = "never")'
- Rscript -e 'pkgdown::build_site()'
artifacts:
paths:
- docs
expire_in: 30 days
integration-main:
stage: pkgdown-move
dependencies:
- integration
only:
- main
script:
- mkdir -p public
- echo "test file" > public/test.txt
- 'curl --location --output artifacts.zip --header "JOB-TOKEN: $CI_JOB_TOKEN" "https://gitlab.com/api/v4/projects/$CI_PROJECT_ID/jobs/artifacts/main/download?job=pages" &&
unzip artifacts.zip &&
rm artifacts.zip &&
echo "copied main artifacts" ||
echo "copied main artifacts failed"'
- ls -la docs || echo "Docs directory does not exist or is empty"
- cp -r docs/* public || echo "No files to copy"
- ls -la public
artifacts:
paths:
- public
expire_in: 30 days
pages:
stage: deploy
script:
- echo "deployment with cache"
- ls -la public || echo "Public directory does not exist"
artifacts:
paths:
- public
only:
- main
long,lat,unique_squirrel_id,hectare,shift,date,hectare_squirrel_number,age,primary_fur_color,highlight_fur_color,combination_of_primary_and_highlight_color,color_notes,location,above_ground_sighter_measurement,specific_location,running,chasing,climbing,eating,foraging,other_activities,kuks,quaas,moans,tail_flags,tail_twitches,approaches,indifferent,runs_from,other_interactions,lat_long,zip_codes,community_districts,borough_boundaries,city_council_districts,police_precincts
-73.9676692772518,40.7764726688908,15G-AM-1008-03,15G,AM,10082018,3,Adult,Gray,NA,Gray+,NA,Ground Plane,FALSE,NA,FALSE,TRUE,FALSE,FALSE,FALSE,NA,TRUE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,NA,POINT (-73.9676692772518 40.7764726688908),NA,19,4,19,13
-73.9760256477558,40.7703573131398,5D-AM-1020-02,05D,AM,10202018,2,Adult,Gray,Cinnamon,Gray+Cinnamon,NA,Ground Plane,FALSE,NA,FALSE,FALSE,TRUE,FALSE,TRUE,small jumps,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,NA,POINT (-73.9760256477558 40.7703573131398),NA,19,4,19,13
-73.954595058342,40.7956567934304,39F-AM-1014-04,39F,AM,10142018,4,Juvenile,Gray,Cinnamon,Gray+Cinnamon,NA,Ground Plane,FALSE,NA,FALSE,FALSE,FALSE,FALSE,TRUE,NA,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,TRUE,FALSE,NA,POINT (-73.954595058342 40.7956567934304),NA,19,4,19,13
-73.9715921982161,40.7746153066601,11E-PM-1012-06,11E,PM,10122018,6,Adult,Gray,"Cinnamon, White","Gray+Cinnamon, White",Gray & Cinnamon selected as Primary. White selected as Highlights. Made executive adjustments.,Above Ground,5,NA,FALSE,FALSE,TRUE,TRUE,FALSE,NA,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,TRUE,FALSE,NA,POINT (-73.9715921982161 40.7746153066601),NA,19,4,19,13
-73.9555255950648,40.7977720808005,40D-AM-1013-04,40D,AM,10132018,4,Adult,Gray,Cinnamon,Gray+Cinnamon,Gray & Cinnamon selected as Primary. Nothing selected as Highlights. Made executive adjustments.,Ground Plane,FALSE,NA,FALSE,FALSE,FALSE,TRUE,TRUE,NA,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,TRUE,FALSE,NA,POINT (-73.9555255950648 40.7977720808005),NA,19,4,19,13
-73.9647904085226,40.7911589002217,30A-PM-1020-02,30A,PM,10202018,2,Adult,Gray,"Cinnamon, White","Gray+Cinnamon, White",Cinnamon back. Gray & Cinnamon selected as Primary. White selected as Highlights. Made executive adjustments.,Ground Plane,FALSE,Rock,FALSE,FALSE,FALSE,TRUE,FALSE,NA,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,TRUE,NA,POINT (-73.9647904085226 40.7911589002217),NA,19,4,19,13
-73.9710541405708,40.7724691605718,10F-PM-1019-05,10F,PM,10192018,5,Adult,Black,NA,Black+,NA,Above Ground,10,"Behind fence, tree",FALSE,FALSE,TRUE,FALSE,FALSE,NA,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,TRUE,FALSE,NA,POINT (-73.9710541405708 40.7724691605718),NA,19,4,19,13
-73.9672413354558,40.7838116138235,22C-PM-1006-03,22C,PM,10062018,3,Adult,Gray,NA,Gray+,NA,Ground Plane,FALSE,NA,TRUE,FALSE,FALSE,FALSE,FALSE,NA,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,NA,POINT (-73.9672413354558 40.7838116138235),NA,19,4,19,13
-73.9693465383617,40.7744996336934,12F-PM-1007-01,12F,PM,10072018,1,Adult,Cinnamon,Gray,Cinnamon+Gray,NA,Ground Plane,FALSE,NA,FALSE,FALSE,FALSE,TRUE,TRUE,NA,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,TRUE,NA,POINT (-73.9693465383617 40.7744996336934),NA,19,4,19,13
-73.9542990150586,40.7940915300678,37G-PM-1007-09,37G,PM,10072018,9,Adult,Cinnamon,White,Cinnamon+White,NA,NA,NA,NA,FALSE,FALSE,FALSE,FALSE,TRUE,NA,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,NA,POINT (-73.9542990150586 40.7940915300678),NA,19,4,19,13
-73.9556218199258,40.7980460204041,41D-PM-1014-01,41D,PM,10142018,1,Adult,Gray,Cinnamon,Gray+Cinnamon,NA,Ground Plane,FALSE,NA,FALSE,FALSE,FALSE,TRUE,FALSE,"digging,drinking",FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,TRUE,NA,POINT (-73.9556218199258 40.7980460204041),NA,19,4,19,13
-73.969532160039,40.7822616641357,20B-PM-1013-01,20B,PM,10132018,1,Adult,Gray,White,Gray+White,NA,Ground Plane,FALSE,NA,FALSE,FALSE,FALSE,FALSE,TRUE,NA,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,NA,POINT (-73.969532160039 40.7822616641357),NA,19,4,19,13
-73.9673243699918,40.7875392957722,26A-AM-1014-01,26A,AM,10142018,1,NA,Gray,Cinnamon,Gray+Cinnamon,NA,Ground Plane,FALSE,NA,FALSE,TRUE,FALSE,FALSE,TRUE,NA,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,could not get close due to fences,POINT (-73.9673243699918 40.7875392957722),NA,19,4,19,13
-73.9713519158027,40.7798470142991,17B-AM-1010-01,17B,AM,10102018,1,Adult,Gray,Cinnamon,Gray+Cinnamon,NA,Ground Plane,FALSE,NA,FALSE,FALSE,FALSE,TRUE,FALSE,NA,FALSE,FALSE,FALSE,FALSE,TRUE,FALSE,TRUE,FALSE,NA,POINT (-73.9713519158027 40.7798470142991),NA,19,4,19,13
-73.9635689059841,40.790163434915,30B-PM-1019-03,30B,PM,10192018,3,Adult,Gray,Black,Gray+Black,NA,Above Ground,10,NA,FALSE,FALSE,TRUE,FALSE,FALSE,NA,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,NA,POINT (-73.9635689059841 40.790163434915),NA,19,4,19,13
-73.9669366401071,40.7836023897982,22C-PM-1006-09,22C,PM,10062018,9,Adult,Gray,NA,Gray+,NA,Ground Plane,FALSE,NA,TRUE,FALSE,FALSE,FALSE,FALSE,NA,FALSE,TRUE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,NA,POINT (-73.96693664010711 40.7836023897982),NA,19,4,19,13
-73.9586085843149,40.7946617684536,36C-AM-1014-03,36C,AM,10142018,3,NA,Gray,NA,Gray+,NA,Ground Plane,FALSE,NA,FALSE,FALSE,FALSE,FALSE,TRUE,NA,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,TRUE,NA,POINT (-73.9586085843149 40.7946617684536),NA,19,4,19,13
-73.9639431360458,40.7908677445466,30B-AM-1007-04,30B,AM,10072018,4,Adult,Gray,NA,Gray+,NA,Ground Plane,FALSE,NA,FALSE,FALSE,FALSE,TRUE,TRUE,NA,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,TRUE,NA,POINT (-73.9639431360458 40.7908677445466),NA,19,4,19,13
-73.9577758125518,40.799384716477,41B-AM-1010-10,41B,AM,10102018,10,Adult,Cinnamon,White,Cinnamon+White,NA,Ground Plane,FALSE,NA,TRUE,FALSE,FALSE,FALSE,FALSE,NA,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,NA,POINT (-73.9577758125518 40.799384716477),NA,19,4,19,13
-73.954482814186,40.7987031768001,42D-PM-1013-01,42D,PM,10132018,1,Adult,Gray,Cinnamon,Gray+Cinnamon,Drawing included.,Ground Plane,FALSE,NA,FALSE,FALSE,FALSE,FALSE,TRUE,watching passers-by,FALSE,FALSE,FALSE,FALSE,FALSE,TRUE,TRUE,FALSE,NA,POINT (-73.954482814186 40.7987031768001),NA,19,4,19,13
-73.9526681107152,40.7977012009146,42F-PM-1017-01,42F,PM,10172018,1,Adult,Gray,"Cinnamon, White","Gray+Cinnamon, White",NA,Ground Plane,FALSE,NA,TRUE,FALSE,FALSE,FALSE,FALSE,playing,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,TRUE,FALSE,NA,POINT (-73.9526681107152 40.7977012009146),NA,19,4,19,13
-73.9587439756541,40.7849006107353,27I-AM-1007-04,27I,AM,10072018,4,Adult,Gray,Cinnamon,Gray+Cinnamon,NA,Ground Plane,FALSE,NA,FALSE,FALSE,FALSE,FALSE,TRUE,NA,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,TRUE,TRUE,NA,POINT (-73.9587439756541 40.7849006107353),NA,19,4,19,13
-73.9720389756717,40.7763524091989,13C-PM-1019-02,13C,PM,10192018,2,Adult,Gray,NA,Gray+,NA,Ground Plane,FALSE,NA,TRUE,FALSE,FALSE,FALSE,FALSE,NA,FALSE,FALSE,FALSE,FALSE,TRUE,FALSE,TRUE,FALSE,NA,POINT (-73.9720389756717 40.7763524091989),NA,19,4,19,13
-73.9805517765469,40.7683044693163,2B-PM-1013-05,02B,PM,10132018,5,Adult,Gray,White,Gray+White,NA,Ground Plane,FALSE,NA,TRUE,FALSE,TRUE,FALSE,FALSE,climbing fence!,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,snuck into bike cart!,POINT (-73.9805517765469 40.7683044693163),NA,19,4,19,13
-73.9787771053108,40.769356212275,3B-AM-1010-07,03B,AM,10102018,7,Adult,Gray,NA,Gray+,NA,Above Ground,10,NA,FALSE,FALSE,TRUE,FALSE,FALSE,together w/ #8,FALSE,FALSE,FALSE,TRUE,FALSE,FALSE,TRUE,FALSE,NA,POINT (-73.9787771053108 40.76935621227501),NA,19,4,19,13
-73.961934398055,40.7924789548522,33B-PM-1010-07,33B,PM,10102018,7,Adult,NA,NA,+,NA,Ground Plane,FALSE,NA,FALSE,FALSE,FALSE,TRUE,FALSE,NA,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,TRUE,NA,POINT (-73.961934398055 40.7924789548522),NA,19,4,19,13
-73.9598084794625,40.7976165434502,39A-PM-1014-01,39A,PM,10142018,1,Adult,Gray,White,Gray+White,NA,Ground Plane,FALSE,NA,FALSE,TRUE,FALSE,FALSE,FALSE,NA,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,TRUE,FALSE,NA,POINT (-73.9598084794625 40.7976165434502),NA,19,4,19,13
-73.9639505810228,40.789573183584,29B-PM-1010-01,29B,PM,10102018,1,Adult,Cinnamon,"Gray, White","Cinnamon+Gray, White",NA,Above Ground,4,climbing trees,FALSE,FALSE,TRUE,TRUE,TRUE,scratching self,FALSE,FALSE,FALSE,FALSE,TRUE,FALSE,TRUE,FALSE,NA,POINT (-73.9639505810228 40.789573183584),NA,19,4,19,13
-73.9689700100267,40.7775169562765,15E-PM-1008-05,15E,PM,10082018,5,Adult,Gray,NA,Gray+,NA,Above Ground,20,NA,FALSE,FALSE,FALSE,FALSE,FALSE,sitting,FALSE,TRUE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,NA,POINT (-73.9689700100267 40.7775169562765),NA,19,4,19,13
-73.9685859705486,40.7848805065322,23A-AM-1018-04,23A,AM,10182018,4,Adult,Gray,NA,Gray+,NA,Above Ground,3,Tree,FALSE,FALSE,TRUE,FALSE,FALSE,NA,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,TRUE,NA,POINT (-73.9685859705486 40.7848805065322),NA,19,4,19,13
-73.9737247632185,40.7759469280872,12C-PM-1017-01,12C,PM,10172018,1,Juvenile,Gray,Cinnamon,Gray+Cinnamon,NA,Ground Plane,FALSE,NA,TRUE,FALSE,FALSE,TRUE,FALSE,"digging/burying,drinking from lake",FALSE,FALSE,FALSE,FALSE,TRUE,FALSE,TRUE,FALSE,NA,POINT (-73.9737247632185 40.7759469280872),NA,19,4,19,13
-73.9571233640232,40.7992458980266,41B-PM-1014-04,41B,PM,10142018,4,Adult,Gray,Cinnamon,Gray+Cinnamon,NA,Above Ground,40,NA,FALSE,FALSE,TRUE,FALSE,FALSE,NA,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,climbing,POINT (-73.9571233640232 40.7992458980266),NA,19,4,19,13
-73.965019827314,40.7759864291323,15I-AM-1008-03,15I,AM,10082018,3,Adult,Gray,NA,Gray+,NA,Ground Plane,FALSE,NA,TRUE,FALSE,FALSE,FALSE,FALSE,NA,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,TRUE,FALSE,NA,POINT (-73.965019827314 40.7759864291323),NA,19,4,19,13
-73.9721263050502,40.7698763846186,7G-PM-1018-01,07G,PM,10182018,1,Adult,Gray,"Cinnamon, White","Gray+Cinnamon, White",NA,Ground Plane,FALSE,NA,FALSE,FALSE,FALSE,TRUE,FALSE,NA,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,TRUE,FALSE,NA,POINT (-73.9721263050502 40.7698763846186),NA,19,4,19,13
-73.9686999860219,40.7844014735136,22B-PM-1014-03,22B,PM,10142018,3,Juvenile,Gray,Cinnamon,Gray+Cinnamon,NA,Above Ground,8,NA,TRUE,TRUE,FALSE,FALSE,FALSE,NA,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,NA,POINT (-73.9686999860219 40.7844014735136),NA,19,4,19,13
-73.9698592838836,40.7743071443959,12F-AM-1020-03,12F,AM,10202018,3,Adult,Gray,Black,Gray+Black,NA,Ground Plane,FALSE,NA,FALSE,FALSE,FALSE,FALSE,FALSE,playing,FALSE,FALSE,FALSE,FALSE,TRUE,FALSE,FALSE,FALSE,NA,POINT (-73.9698592838836 40.7743071443959),NA,19,4,19,13
-73.9685940262068,40.776932102013,15F-AM-1007-07,15F,AM,10072018,7,Adult,Cinnamon,Black,Cinnamon+Black,NA,Ground Plane,FALSE,NA,FALSE,FALSE,FALSE,FALSE,TRUE,NA,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,TRUE,FALSE,NA,POINT (-73.9685940262068 40.776932102013),NA,19,4,19,13
-73.9752263564287,40.772084917017,7C-PM-1020-02,07C,PM,10202018,2,Adult,Gray,NA,Gray+,NA,Ground Plane,FALSE,NA,FALSE,FALSE,FALSE,FALSE,TRUE,NA,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,NA,POINT (-73.9752263564287 40.772084917017),NA,19,4,19,13
-73.9758128509653,40.7715946097064,7C-PM-1020-03,07C,PM,10202018,3,Adult,Gray,Cinnamon,Gray+Cinnamon,NA,Above Ground,5,NA,FALSE,FALSE,TRUE,FALSE,FALSE,NA,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,NA,POINT (-73.9758128509653 40.7715946097064),NA,19,4,19,13
-73.970260899173,40.783651724865,21A-AM-1019-05,21A,AM,10192018,5,Adult,Gray,NA,Gray+,NA,Above Ground,2,NA,FALSE,FALSE,TRUE,FALSE,FALSE,NA,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,TRUE,FALSE,NA,POINT (-73.970260899173 40.783651724865),NA,19,4,19,13
-73.9746877519291,40.7761402808083,11B-PM-1014-03,11B,PM,10142018,3,NA,Gray,NA,Gray+,NA,Above Ground,10,NA,FALSE,TRUE,FALSE,FALSE,FALSE,NA,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,NA,POINT (-73.9746877519291 40.7761402808083),NA,19,4,19,13
-73.9749641575871,40.7673305056277,3F-AM-1006-05,03F,AM,10062018,5,Adult,Cinnamon,Gray,Cinnamon+Gray,NA,Above Ground,3,NA,FALSE,FALSE,TRUE,TRUE,FALSE,NA,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,TRUE,NA,POINT (-73.9749641575871 40.7673305056277),NA,19,4,19,13
-73.9700330712119,40.7782913925727,16D-PM-1010-06,16D,PM,10102018,6,Adult,Gray,NA,Gray+,NA,Ground Plane,FALSE,NA,TRUE,FALSE,FALSE,FALSE,TRUE,walking,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,checking me out,POINT (-73.9700330712119 40.7782913925727),NA,19,4,19,13
-73.9720050204318,40.7699419094168,7G-AM-1010-03,07G,AM,10102018,3,Adult,Gray,Cinnamon,Gray+Cinnamon,NA,Ground Plane,FALSE,NA,TRUE,FALSE,FALSE,FALSE,FALSE,NA,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,TRUE,FALSE,NA,POINT (-73.9720050204318 40.7699419094168),NA,19,4,19,13
-73.980897497712,40.7690578709841,2A-PM-1019-02,02A,PM,10192018,2,Adult,Gray,White,Gray+White,NA,Ground Plane,FALSE,NA,TRUE,FALSE,FALSE,FALSE,FALSE,NA,FALSE,FALSE,FALSE,TRUE,FALSE,FALSE,FALSE,FALSE,NA,POINT (-73.980897497712 40.7690578709841),NA,19,4,19,13
-73.9640741640547,40.7807274581426,20G-AM-1018-01,20G,AM,10182018,1,Juvenile,Gray,NA,Gray+,NA,Above Ground,7,Tree limb,FALSE,FALSE,FALSE,FALSE,FALSE,sitting still on limb,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,TRUE,FALSE,NA,POINT (-73.9640741640547 40.7807274581426),NA,19,4,19,13
-73.9504693544225,40.797225436004,42H-AM-1019-01,42H,AM,10192018,1,Adult,Cinnamon,White,Cinnamon+White,NA,Ground Plane,FALSE,NA,FALSE,FALSE,FALSE,TRUE,TRUE,NA,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,NA,POINT (-73.9504693544225 40.797225436004),NA,19,4,19,13
-73.9562442622553,40.7957285542564,38E-AM-1010-03,38E,AM,10102018,3,Adult,Gray,Cinnamon,Gray+Cinnamon,NA,Ground Plane,FALSE,NA,FALSE,FALSE,FALSE,TRUE,TRUE,NA,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,NA,POINT (-73.9562442622553 40.7957285542564),NA,19,4,19,13
-73.9733437449715,40.7782401548362,14B-PM-1014-07,14B,PM,10142018,7,Adult,Gray,Cinnamon,Gray+Cinnamon,NA,Ground Plane,FALSE,NA,FALSE,FALSE,FALSE,FALSE,TRUE,NA,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,NA,POINT (-73.9733437449715 40.7782401548362),NA,19,4,19,13
-73.9725669210177,40.7681496989029,5H-AM-1007-01,05H,AM,10072018,1,Adult,Gray,Cinnamon,Gray+Cinnamon,NA,NA,NA,NA,FALSE,FALSE,FALSE,FALSE,TRUE,NA,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,NA,POINT (-73.9725669210177 40.7681496989029),NA,19,4,19,13
-73.9657391918196,40.776502470347,16H-PM-1014-01,16H,PM,10142018,1,Juvenile,Gray,White,Gray+White,NA,Ground Plane,FALSE,NA,TRUE,FALSE,FALSE,FALSE,FALSE,NA,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,TRUE,FALSE,NA,POINT (-73.9657391918196 40.776502470347),NA,19,4,19,13
-73.9728700359494,40.7659842666881,3H-PM-1014-05,03H,PM,10142018,5,Adult,Gray,White,Gray+White,NA,Ground Plane,FALSE,NA,FALSE,FALSE,FALSE,TRUE,FALSE,NA,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,TRUE,FALSE,NA,POINT (-73.9728700359494 40.7659842666881),NA,19,4,19,13
-73.9570130017159,40.7996027428625,42B-AM-1014-02,42B,AM,10142018,2,Adult,Black,NA,Black+,NA,Ground Plane,FALSE,NA,FALSE,FALSE,FALSE,FALSE,TRUE,digging,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,TRUE,FALSE,NA,POINT (-73.9570130017159 40.7996027428625),NA,19,4,19,13
-73.9576913492669,40.7994216061391,41B-AM-1010-11,41B,AM,10102018,11,Adult,Gray,Cinnamon,Gray+Cinnamon,NA,NA,NA,NA,FALSE,FALSE,FALSE,TRUE,FALSE,eating a mushroom!,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,TRUE,FALSE,NA,POINT (-73.9576913492669 40.7994216061391),NA,19,4,19,13
-73.9613347295946,40.7938900965153,34B-AM-1013-02,34B,AM,10132018,2,Adult,Gray,Cinnamon,Gray+Cinnamon,NA,Ground Plane,FALSE,NA,FALSE,FALSE,FALSE,FALSE,TRUE,NA,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,TRUE,FALSE,NA,POINT (-73.9613347295946 40.7938900965153),NA,19,4,19,13
-73.9686907918759,40.7839462261858,22B-AM-1013-03,22B,AM,10132018,3,Adult,Cinnamon,NA,Cinnamon+,NA,Ground Plane,FALSE,NA,FALSE,FALSE,FALSE,FALSE,TRUE,NA,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,TRUE,FALSE,NA,POINT (-73.9686907918759 40.7839462261858),NA,19,4,19,13
-73.9749469566854,40.7667805367199,2F-PM-1014-10,02F,PM,10142018,10,Adult,Gray,White,Gray+White,NA,Ground Plane,FALSE,NA,TRUE,FALSE,FALSE,FALSE,FALSE,NA,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,TRUE,FALSE,NA,POINT (-73.9749469566854 40.7667805367199),NA,19,4,19,13
-73.9785114291288,40.7719779589449,6A-PM-1012-03,06A,PM,10122018,3,Adult,Cinnamon,White,Cinnamon+White,NA,Ground Plane,FALSE,NA,TRUE,TRUE,TRUE,FALSE,FALSE,NA,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,NA,POINT (-73.9785114291288 40.7719779589449),NA,19,4,19,13
-73.9643538221947,40.7917565604735,31A-PM-1017-01,31A,PM,10172018,1,Juvenile,Cinnamon,"Gray, White","Cinnamon+Gray, White","Gray lower back, Gray & Cinnamon selected as Primary with ""lower back"" written in next to Gray. White selected as Highlights. Made executive adjustments.",Ground Plane,FALSE,NA,FALSE,FALSE,FALSE,FALSE,TRUE,NA,FALSE,FALSE,FALSE,FALSE,TRUE,FALSE,FALSE,FALSE,NA,POINT (-73.9643538221947 40.7917565604735),NA,19,4,19,13
-73.9801636400744,40.7690192055926,2A-AM-1010-09,02A,AM,10102018,9,Adult,Gray,White,Gray+White,NA,Above Ground,NA,climbing in bush,FALSE,FALSE,TRUE,FALSE,FALSE,hopping & flipping around. this one was very energetic & jumping aorund,FALSE,FALSE,FALSE,FALSE,TRUE,FALSE,FALSE,FALSE,climbed a foot up a tree and watched me,POINT (-73.9801636400744 40.7690192055926),NA,19,4,19,13
-73.9550082056509,40.7894521543449,33I-AM-1008-03,33I,AM,10082018,3,Adult,Gray,NA,Gray+,NA,Above Ground,2,98th @ edge of park,FALSE,FALSE,TRUE,FALSE,FALSE,NA,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,TRUE,FALSE,NA,POINT (-73.9550082056509 40.7894521543449),NA,19,4,19,13
-73.9777978497894,40.7668620784309,1D-AM-1006-01,01D,AM,10062018,1,Juvenile,Gray,White,Gray+White,NA,Ground Plane,FALSE,NA,TRUE,FALSE,TRUE,FALSE,TRUE,NA,FALSE,FALSE,FALSE,FALSE,TRUE,FALSE,FALSE,FALSE,NA,POINT (-73.9777978497894 40.7668620784309),NA,19,4,19,13
-73.9596398997228,40.7933386953847,34D-PM-1007-02,34D,PM,10072018,2,Adult,Black,NA,Black+,NA,Above Ground,25,NA,TRUE,FALSE,TRUE,FALSE,FALSE,NA,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,cautiously aware,POINT (-73.9596398997228 40.7933386953847),NA,19,4,19,13
-73.9584024936392,40.7851491701944,27I-PM-1020-01,27I,PM,10202018,1,Adult,Gray,White,Gray+White,NA,Ground Plane,FALSE,NA,FALSE,FALSE,FALSE,FALSE,TRUE,NA,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,TRUE,TRUE,runs from (us),POINT (-73.9584024936392 40.7851491701944),NA,19,4,19,13
-73.9776151109912,40.7694681558386,4C-PM-1010-09,04C,PM,10102018,9,Adult,Gray,White,Gray+White,NA,Ground Plane,FALSE,NA,FALSE,TRUE,FALSE,FALSE,TRUE,NA,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,NA,POINT (-73.9776151109912 40.7694681558386),NA,19,4,19,13
-73.9689504114652,40.7766770153764,14F-PM-1012-05,14F,PM,10122018,5,Adult,Cinnamon,"Gray, White","Cinnamon+Gray, White",NA,Above Ground,2,on a fallen branch,TRUE,FALSE,FALSE,TRUE,FALSE,sitting,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,looking at me,POINT (-73.9689504114652 40.7766770153764),NA,19,4,19,13
-73.965509576403,40.7752456763263,14I-PM-1018-05,14I,PM,10182018,5,Adult,Gray,Cinnamon,Gray+Cinnamon,NA,Above Ground,2,NA,FALSE,FALSE,TRUE,TRUE,FALSE,NA,FALSE,FALSE,FALSE,FALSE,TRUE,FALSE,TRUE,FALSE,NA,POINT (-73.96550957640301 40.7752456763263),NA,19,4,19,13
-73.9558268731771,40.7952074193788,38E-PM-1014-04,38E,PM,10142018,4,Adult,Gray,NA,Gray+,NA,Ground Plane,FALSE,THICK UNDERGROWTH,FALSE,FALSE,FALSE,FALSE,TRUE,NA,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,TRUE,NA,POINT (-73.9558268731771 40.7952074193788),NA,19,4,19,13
-73.9607608482656,40.7954687648248,36A-PM-1013-06,36A,PM,10132018,6,NA,Gray,Cinnamon,Gray+Cinnamon,NA,Ground Plane,FALSE,EDGE OF WOODS,FALSE,FALSE,FALSE,TRUE,FALSE,NA,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,TRUE,FALSE,NA,POINT (-73.9607608482656 40.7954687648248),NA,19,4,19,13
-73.956926909344,40.7965323262487,39D-PM-1012-03,39D,PM,10122018,3,Adult,Gray,White,Gray+White,NA,Ground Plane,FALSE,NA,TRUE,FALSE,FALSE,FALSE,FALSE,NA,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,TRUE,NA,POINT (-73.956926909344 40.7965323262487),NA,19,4,19,13
-73.9795492724533,40.7709497471738,4A-AM-1007-02,04A,AM,10072018,2,Adult,Gray,NA,Gray+,NA,Ground Plane,FALSE,NA,FALSE,FALSE,FALSE,FALSE,TRUE,NA,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,TRUE,FALSE,NA,POINT (-73.9795492724533 40.7709497471738),NA,19,4,19,13
-73.9688293382172,40.7738958027568,12G-AM-1012-04,12G,AM,10122018,4,Adult,Gray,"Cinnamon, White","Gray+Cinnamon, White",NA,Ground Plane,FALSE,NA,FALSE,FALSE,FALSE,FALSE,TRUE,NA,FALSE,FALSE,FALSE,FALSE,TRUE,FALSE,TRUE,FALSE,NA,POINT (-73.9688293382172 40.773895802756805),NA,19,4,19,13
-73.9616944195776,40.7927250423024,33B-PM-1010-02,33B,PM,10102018,2,Adult,NA,NA,+,NA,Ground Plane,FALSE,NA,FALSE,FALSE,FALSE,FALSE,TRUE,NA,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,TRUE,NA,POINT (-73.9616944195776 40.7927250423024),NA,19,4,19,13
-73.9690395363594,40.771128205027,9I-PM-1010-01,09I,PM,10102018,1,Adult,Gray,"Cinnamon, White","Gray+Cinnamon, White",standard coloration,Ground Plane,FALSE,NA,FALSE,FALSE,FALSE,FALSE,TRUE,NA,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,TRUE,FALSE,NA,POINT (-73.9690395363594 40.771128205027),NA,19,4,19,13
-73.9564632239432,40.7904807427954,33G-AM-1013-01,33G,AM,10132018,1,Adult,Cinnamon,NA,Cinnamon+,NA,Above Ground,13,shelter in hole in tree,FALSE,FALSE,TRUE,FALSE,FALSE,NA,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,TRUE,TRUE,NA,POINT (-73.9564632239432 40.7904807427954),NA,19,4,19,13
-73.9701824376506,40.7763703306736,14E-AM-1008-21,14E,AM,10082018,21,Adult,Gray,NA,Gray+,NA,Ground Plane,FALSE,NA,FALSE,FALSE,FALSE,FALSE,TRUE,walking,FALSE,FALSE,FALSE,FALSE,FALSE,TRUE,FALSE,FALSE,"curious,but not expecting food",POINT (-73.9701824376506 40.7763703306736),NA,19,4,19,13
-73.958770180151,40.7934123941528,35D-PM-1013-04,35D,PM,10132018,4,Juvenile,Gray,White,Gray+White,NA,NA,NA,NA,FALSE,FALSE,FALSE,FALSE,FALSE,NA,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,NA,POINT (-73.958770180151 40.7934123941528),NA,19,4,19,13
-73.9528937660465,40.7922919074537,36I-AM-1017-01,36I,AM,10172018,1,Adult,Gray,White,Gray+White,NA,Ground Plane,FALSE,NA,TRUE,FALSE,FALSE,TRUE,TRUE,NA,FALSE,FALSE,FALSE,FALSE,TRUE,FALSE,FALSE,TRUE,runs from (me!)—from a pretty big distance,POINT (-73.9528937660465 40.7922919074537),NA,19,4,19,13
-73.955352152771,40.7988549523022,42D-AM-1014-01,42D,AM,10142018,1,Adult,Gray,"Cinnamon, White","Gray+Cinnamon, White",NA,Above Ground,20,NA,FALSE,FALSE,TRUE,TRUE,FALSE,NA,TRUE,FALSE,FALSE,FALSE,FALSE,FALSE,TRUE,FALSE,NA,POINT (-73.955352152771 40.7988549523022),NA,19,4,19,13
-73.9547398684817,40.7896483795302,33I-AM-1008-01,33I,AM,10082018,1,Adult,Gray,Cinnamon,Gray+Cinnamon,NA,Ground Plane,FALSE,edge of park @ 98th (north),FALSE,FALSE,FALSE,FALSE,TRUE,NA,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,TRUE,FALSE,NA,POINT (-73.9547398684817 40.7896483795302),NA,19,4,19,13
-73.9668922014699,40.7823535653774,21D-AM-1008-06,21D,AM,10082018,6,Adult,Gray,NA,Gray+,NA,Ground Plane,FALSE,NA,FALSE,FALSE,FALSE,FALSE,TRUE,NA,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,TRUE,NA,POINT (-73.9668922014699 40.7823535653774),NA,19,4,19,13
-73.9722053355548,40.7662094993614,3I-AM-1010-03,03I,AM,10102018,3,Adult,Gray,NA,Gray+,NA,Above Ground,50,NA,TRUE,FALSE,FALSE,FALSE,FALSE,NA,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,TRUE,FALSE,NA,POINT (-73.9722053355548 40.7662094993614),NA,19,4,19,13
-73.9569375355884,40.7935398008612,36E-AM-1013-02,36E,AM,10132018,2,Adult,Gray,NA,Gray+,NA,Ground Plane,FALSE,NA,TRUE,FALSE,FALSE,TRUE,FALSE,NA,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,TRUE,NA,POINT (-73.9569375355884 40.7935398008612),NA,19,4,19,13
-73.9763719445827,40.7689551413337,4D-PM-1008-04,04D,PM,10082018,4,Adult,Cinnamon,"Gray, White","Cinnamon+Gray, White",NA,Ground Plane,FALSE,NA,FALSE,FALSE,FALSE,FALSE,TRUE,NA,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,TRUE,FALSE,NA,POINT (-73.9763719445827 40.7689551413337),NA,19,4,19,13
-73.9756573579063,40.7656644063024,1G-PM-1010-01,01G,PM,10102018,1,Adult,Gray,White,Gray+White,NA,Above Ground,15,NA,FALSE,FALSE,TRUE,TRUE,FALSE,NA,FALSE,FALSE,FALSE,TRUE,FALSE,FALSE,TRUE,FALSE,too busy eating in his tree,POINT (-73.9756573579063 40.7656644063024),NA,19,4,19,13
-73.9618064639153,40.792158440043,32C-PM-1013-12,32C,PM,10132018,12,Adult,Gray,NA,Gray+,NA,Ground Plane,FALSE,NA,TRUE,FALSE,FALSE,FALSE,TRUE,NA,FALSE,FALSE,FALSE,FALSE,TRUE,TRUE,FALSE,FALSE,NA,POINT (-73.9618064639153 40.792158440043),NA,19,4,19,13
-73.9677646187171,40.7746492806333,13H-PM-1010-05,13H,PM,10102018,5,Adult,Gray,NA,Gray+,NA,Ground Plane,FALSE,NA,FALSE,FALSE,FALSE,FALSE,TRUE,NA,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,TRUE,FALSE,NA,POINT (-73.9677646187171 40.7746492806333),NA,19,4,19,13
-73.9583101927652,40.7852649316039,27I-PM-1020-05,27I,PM,10202018,5,Adult,Gray,Cinnamon,Gray+Cinnamon,NA,Above Ground,10,In tree,TRUE,FALSE,FALSE,FALSE,FALSE,NA,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,TRUE,runs from (us),POINT (-73.9583101927652 40.7852649316039),NA,19,4,19,13
-73.9669814346326,40.780390919948,19E-PM-1018-01,19E,PM,10182018,1,Adult,Gray,Cinnamon,Gray+Cinnamon,NA,Ground Plane,FALSE,NA,TRUE,FALSE,FALSE,FALSE,FALSE,NA,FALSE,FALSE,FALSE,FALSE,TRUE,FALSE,FALSE,TRUE,NA,POINT (-73.9669814346326 40.780390919948),NA,19,4,19,13
-73.969105907,40.7820474909192,20B-PM-1013-08,20B,PM,10132018,8,Adult,Gray,White,Gray+White,(very brown),Ground Plane,FALSE,NA,TRUE,FALSE,FALSE,FALSE,FALSE,being chased by dog,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,TRUE,NA,POINT (-73.969105907 40.7820474909192),NA,19,4,19,13
-73.9612658688914,40.7912119940469,32C-AM-1014-04,32C,AM,10142018,4,Adult,Gray,NA,Gray+,NA,Above Ground,8,NA,FALSE,FALSE,FALSE,TRUE,FALSE,NA,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,NA,POINT (-73.9612658688914 40.7912119940469),NA,19,4,19,13
-73.97035767623,40.7714036487747,9H-PM-1018-09,09H,PM,10182018,9,Adult,Gray,NA,Gray+,NA,Ground Plane,FALSE,NA,FALSE,FALSE,FALSE,TRUE,TRUE,NA,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,NA,POINT (-73.97035767623 40.7714036487747),NA,19,4,19,13
-73.9545383719188,40.7899711263765,33I-PM-1006-03,33I,PM,10062018,3,Adult,Gray,NA,Gray+,NA,Ground Plane,FALSE,NA,FALSE,FALSE,FALSE,FALSE,TRUE,NA,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,TRUE,NA,POINT (-73.95453837191882 40.7899711263765),NA,19,4,19,13
-73.9762246600197,40.775164077652,10A-AM-1006-03,10A,AM,10062018,3,Juvenile,Cinnamon,NA,Cinnamon+,NA,Ground Plane,FALSE,Bridle Path lawn,FALSE,FALSE,FALSE,TRUE,FALSE,NA,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,NA,POINT (-73.9762246600197 40.775164077652),NA,19,4,19,13
-73.976521916284,40.773784724458,9B-AM-1010-01,09B,AM,10102018,1,Adult,Gray,Cinnamon,Gray+Cinnamon,NA,Ground Plane,FALSE,NA,FALSE,FALSE,FALSE,FALSE,TRUE,NA,TRUE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,TRUE,NA,POINT (-73.976521916284 40.773784724458),NA,19,4,19,13
-73.9594174605642,40.7973128653773,38B-AM-1019-02,38B,AM,10192018,2,Juvenile,Gray,"Cinnamon, White","Gray+Cinnamon, White",NA,Ground Plane,FALSE,NA,FALSE,FALSE,FALSE,TRUE,TRUE,NA,FALSE,FALSE,FALSE,FALSE,TRUE,FALSE,TRUE,FALSE,NA,POINT (-73.9594174605642 40.7973128653773),NA,19,4,19,13
-73.9530809650496,40.7959176317705,40G-PM-1013-02,40G,PM,10132018,2,Adult,Gray,NA,Gray+,NA,Ground Plane,FALSE,NA,TRUE,FALSE,FALSE,TRUE,FALSE,hiding from dog,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,TRUE,runs from (dog),POINT (-73.9530809650496 40.79591763177051),NA,19,4,19,13
-73.9722472286151,40.7699550476176,6G-PM-1020-04,06G,PM,10202018,4,Adult,Gray,NA,Gray+,NA,Ground Plane,FALSE,NA,FALSE,FALSE,FALSE,FALSE,TRUE,NA,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,NA,POINT (-73.9722472286151 40.7699550476176),NA,19,4,19,13
-73.967832992543,40.7783669913408,17E-PM-1018-03,17E,PM,10182018,3,Adult,Gray,NA,Gray+,NA,Ground Plane,FALSE,NA,TRUE,FALSE,FALSE,FALSE,FALSE,NA,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,TRUE,FALSE,NA,POINT (-73.967832992543 40.7783669913408),NA,19,4,19,13
-73.9665871993517,40.7836775064883,22D-PM-1012-07,22D,PM,10122018,7,Adult,Gray,"Black, Cinnamon, White","Gray+Black, Cinnamon, White",NA,Ground Plane,FALSE,NA,FALSE,FALSE,FALSE,TRUE,TRUE,NA,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,TRUE,FALSE,NA,POINT (-73.9665871993517 40.7836775064883),NA,19,4,19,13
-73.965848283831,40.7797243033057,19F-PM-1017-01,19F,PM,10172018,1,Adult,Gray,Cinnamon,Gray+Cinnamon,NA,Ground Plane,FALSE,NA,FALSE,FALSE,TRUE,FALSE,FALSE,NA,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,TRUE,FALSE,NA,POINT (-73.965848283831 40.7797243033057),NA,19,4,19,13
-73.9556177490335,40.7888569161537,32I-AM-1013-03,32I,AM,10132018,3,Juvenile,Gray,Cinnamon,Gray+Cinnamon,NA,Above Ground,15,NA,FALSE,FALSE,TRUE,FALSE,FALSE,NA,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,watching me from tree - curious,POINT (-73.9556177490335 40.7888569161537),NA,19,4,19,13
-73.9724642436394,40.7690526441109,6G-AM-1008-02,06G,AM,10082018,2,Juvenile,Gray,NA,Gray+,NA,Ground Plane,FALSE,bush,FALSE,FALSE,FALSE,FALSE,TRUE,NA,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,TRUE,FALSE,NA,POINT (-73.9724642436394 40.7690526441109),NA,19,4,19,13
-73.970475755546,40.7763348062134,13E-AM-1017-02,13E,AM,10172018,2,Adult,Gray,NA,Gray+,NA,Ground Plane,FALSE,NA,FALSE,FALSE,FALSE,FALSE,TRUE,begging (came one yard away from me and stood there),FALSE,FALSE,FALSE,FALSE,FALSE,TRUE,FALSE,FALSE,NA,POINT (-73.970475755546 40.7763348062134),NA,19,4,19,13
-73.9703921271418,40.7700276115314,7H-PM-1006-06,07H,PM,10062018,6,Adult,Gray,NA,Gray+,NA,Above Ground,15,NA,FALSE,TRUE,TRUE,FALSE,FALSE,playing w/ #7,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,TRUE,FALSE,NA,POINT (-73.9703921271418 40.770027611531404),NA,19,4,19,13
-73.9687020800791,40.7735903424522,11H-AM-1010-08,11H,AM,10102018,8,Adult,Gray,Cinnamon,Gray+Cinnamon,NA,Ground Plane,FALSE,NA,FALSE,FALSE,FALSE,FALSE,TRUE,NA,FALSE,FALSE,FALSE,FALSE,TRUE,FALSE,FALSE,TRUE,NA,POINT (-73.9687020800791 40.7735903424522),NA,19,4,19,13
-73.9742973420446,40.7691801644292,5F-AM-1007-04,05F,AM,10072018,4,Adult,Gray,Cinnamon,Gray+Cinnamon,NA,Above Ground,NA,rocks,FALSE,FALSE,FALSE,TRUE,TRUE,NA,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,NA,POINT (-73.9742973420446 40.7691801644292),NA,19,4,19,13
-73.9714295102249,40.776954371947,14D-PM-1019-02,14D,PM,10192018,2,Adult,Gray,NA,Gray+,NA,Ground Plane,FALSE,NA,FALSE,TRUE,FALSE,FALSE,FALSE,NA,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,NA,POINT (-73.9714295102249 40.776954371947),NA,19,4,19,13
-73.9580021017892,40.7955140102242,37D-PM-1014-07,37D,PM,10142018,7,Adult,Gray,NA,Gray+,NA,Ground Plane,FALSE,NA,FALSE,FALSE,FALSE,FALSE,TRUE,NA,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,TRUE,NA,POINT (-73.9580021017892 40.7955140102242),NA,19,4,19,13
-73.9685429060839,40.7724786961619,11H-AM-1010-05,11H,AM,10102018,5,Adult,Gray,White,Gray+White,NA,Ground Plane,FALSE,NA,FALSE,TRUE,FALSE,FALSE,FALSE,NA,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,TRUE,FALSE,NA,POINT (-73.9685429060839 40.7724786961619),NA,19,4,19,13
-73.9572840457971,40.7886933371744,31H-PM-1008-04,31H,PM,10082018,4,Adult,Gray,NA,Gray+,NA,Above Ground,NA,Also way up,FALSE,FALSE,TRUE,FALSE,TRUE,NA,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,NA,POINT (-73.95728404579711 40.7886933371744),NA,19,4,19,13
-73.9687134137786,40.7812207913391,19C-PM-1018-03,19C,PM,10182018,3,Adult,Gray,Cinnamon,Gray+Cinnamon,NA,Ground Plane,FALSE,NA,FALSE,TRUE,FALSE,FALSE,FALSE,NA,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,TRUE,FALSE,NA,POINT (-73.9687134137786 40.7812207913391),NA,19,4,19,13
-73.9553726714504,40.7987578541123,41D-AM-1014-02,41D,AM,10142018,2,Adult,Gray,NA,Gray+,NA,Above Ground,20,NA,FALSE,FALSE,FALSE,FALSE,FALSE,jumping,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,TRUE,FALSE,NA,POINT (-73.9553726714504 40.7987578541123),NA,19,4,19,13
-73.9790875480358,40.7676104780657,2C-AM-1010-03,02C,AM,10102018,3,Adult,Black,Gray,Black+Gray,NA,Above Ground,30,NA,FALSE,FALSE,TRUE,FALSE,FALSE,NA,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,NA,POINT (-73.9790875480358 40.7676104780657),NA,19,4,19,13
-73.9562177305881,40.7983413276331,41C-PM-1007-03,41C,PM,10072018,3,Adult,Gray,White,Gray+White,NA,Ground Plane,FALSE,NA,TRUE,FALSE,FALSE,FALSE,FALSE,NA,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,NA,POINT (-73.9562177305881 40.7983413276331),NA,19,4,19,13
-73.9640016324897,40.7921759097124,32A-PM-1013-01,32A,PM,10132018,1,Juvenile,Gray,White,Gray+White,NA,Ground Plane,FALSE,NA,FALSE,FALSE,FALSE,FALSE,TRUE,NA,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,NA,POINT (-73.9640016324897 40.7921759097124),NA,19,4,19,13
-73.9789401448556,40.7697373141498,4B-AM-1010-04,04B,AM,10102018,4,Adult,Gray,Cinnamon,Gray+Cinnamon,NA,Ground Plane,FALSE,NA,FALSE,FALSE,FALSE,TRUE,TRUE,NA,FALSE,FALSE,FALSE,FALSE,FALSE,TRUE,FALSE,FALSE,NA,POINT (-73.9789401448556 40.7697373141498),NA,19,4,19,13
-73.9538867186376,40.7941409434007,38G-PM-1020-03,38G,PM,10202018,3,Adult,Gray,Cinnamon,Gray+Cinnamon,NA,Ground Plane,FALSE,NA,TRUE,FALSE,FALSE,FALSE,FALSE,NA,FALSE,FALSE,FALSE,TRUE,FALSE,FALSE,TRUE,FALSE,NA,POINT (-73.9538867186376 40.7941409434007),NA,19,4,19,13
-73.964539031099,40.7809916310012,20G-PM-1013-01,20G,PM,10132018,1,Adult,Cinnamon,White,Cinnamon+White,NA,Ground Plane,FALSE,NA,TRUE,FALSE,FALSE,FALSE,TRUE,NA,FALSE,FALSE,FALSE,FALSE,TRUE,FALSE,FALSE,TRUE,NA,POINT (-73.964539031099 40.7809916310012),NA,19,4,19,13
-73.9601988871514,40.7943473161329,35C-PM-1013-01,35C,PM,10132018,1,NA,Gray,Cinnamon,Gray+Cinnamon,NA,Above Ground,20,NA,FALSE,FALSE,TRUE,FALSE,TRUE,NA,TRUE,TRUE,FALSE,TRUE,TRUE,FALSE,TRUE,FALSE,NA,POINT (-73.9601988871514 40.7943473161329),NA,19,4,19,13
-73.9785675798034,40.7672992405289,1C-PM-1013-05,01C,PM,10132018,5,Adult,Cinnamon,NA,Cinnamon+,NA,Ground Plane,FALSE,NA,FALSE,FALSE,FALSE,FALSE,TRUE,NA,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,NA,POINT (-73.9785675798034 40.7672992405289),NA,19,4,19,13
-73.9684910712272,40.7768811640021,15F-PM-1010-05,15F,PM,10102018,5,Adult,Gray,NA,Gray+,NA,Ground Plane,FALSE,NA,FALSE,FALSE,FALSE,FALSE,TRUE,NA,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,TRUE,FALSE,NA,POINT (-73.9684910712272 40.7768811640021),NA,19,4,19,13
-73.9697178096275,40.7697036696301,7I-PM-1013-07,07I,PM,10132018,7,Adult,Gray,"Cinnamon, White","Gray+Cinnamon, White",NA,Ground Plane,FALSE,Under the tree,FALSE,TRUE,FALSE,FALSE,FALSE,"playing,interacting with #6",FALSE,FALSE,FALSE,FALSE,TRUE,FALSE,FALSE,FALSE,NA,POINT (-73.9697178096275 40.769703669630104),NA,19,4,19,13
-73.9602609920814,40.7942883045566,35C-PM-1013-03,35C,PM,10132018,3,NA,Gray,Cinnamon,Gray+Cinnamon,NA,Ground Plane,FALSE,NA,FALSE,FALSE,FALSE,FALSE,TRUE,NA,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,TRUE,NA,POINT (-73.9602609920814 40.79428830455661),NA,19,4,19,13
-73.979636950073,40.7677999753976,1C-PM-1013-10,01C,PM,10132018,10,Adult,Cinnamon,NA,Cinnamon+,NA,Ground Plane,FALSE,NA,FALSE,FALSE,FALSE,FALSE,TRUE,NA,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,TRUE,FALSE,NA,POINT (-73.979636950073 40.7677999753976),NA,19,4,19,13
-73.9756273257684,40.7706539186221,6D-AM-1008-04,06D,AM,10082018,4,Adult,Gray,NA,Gray+,NA,Above Ground,NA,NA,FALSE,FALSE,TRUE,FALSE,FALSE,NA,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,NA,POINT (-73.9756273257684 40.7706539186221),NA,19,4,19,13
-73.9770873939997,40.7710379662106,6C-PM-1020-02,06C,PM,10202018,2,Adult,Gray,NA,Gray+,NA,Above Ground,10,NA,FALSE,FALSE,TRUE,FALSE,FALSE,NA,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,NA,POINT (-73.9770873939997 40.7710379662106),NA,19,4,19,13
-73.9600357018376,40.7906539766881,32E-AM-1007-08,32E,AM,10072018,8,Adult,Gray,NA,Gray+,NA,Above Ground,65,tree top,FALSE,FALSE,TRUE,FALSE,FALSE,NA,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,NA,POINT (-73.9600357018376 40.7906539766881),NA,19,4,19,13
-73.9793101482654,40.7692600238491,3B-PM-1007-02,03B,PM,10072018,2,Adult,Gray,NA,Gray+,NA,Above Ground,10,in tree,FALSE,FALSE,FALSE,FALSE,FALSE,chased by dog,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,NA,POINT (-73.9793101482654 40.7692600238491),NA,19,4,19,13
-73.9757787135906,40.7737231427345,9B-PM-1013-03,09B,PM,10132018,3,Juvenile,Cinnamon,Gray,Cinnamon+Gray,NA,Ground Plane,FALSE,NA,FALSE,FALSE,FALSE,FALSE,TRUE,NA,FALSE,FALSE,FALSE,FALSE,TRUE,FALSE,TRUE,FALSE,NA,POINT (-73.9757787135906 40.7737231427345),NA,19,4,19,13
-73.9552861155228,40.788973931872,32I-AM-1013-05,32I,AM,10132018,5,Adult,Cinnamon,Gray,Cinnamon+Gray,NA,Above Ground,3,In and below shrub,FALSE,FALSE,TRUE,FALSE,TRUE,NA,FALSE,FALSE,FALSE,TRUE,FALSE,FALSE,TRUE,FALSE,NA,POINT (-73.9552861155228 40.788973931872),NA,19,4,19,13
-73.9677779408464,40.7867482211349,25A-AM-1013-02,25A,AM,10132018,2,NA,Gray,NA,Gray+,NA,Above Ground,15,BIG TREE,FALSE,TRUE,FALSE,FALSE,FALSE,chasing #3,FALSE,FALSE,FALSE,TRUE,FALSE,FALSE,TRUE,FALSE,NA,POINT (-73.9677779408464 40.7867482211349),NA,19,4,19,13
-73.967975586222,40.7735683044313,12H-PM-1007-07,12H,PM,10072018,7,NA,Gray,Cinnamon,Gray+Cinnamon,NA,Ground Plane,FALSE,grass field,FALSE,FALSE,FALSE,FALSE,TRUE,NA,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,TRUE,humans,POINT (-73.967975586222 40.7735683044313),NA,19,4,19,13
-73.9683345414813,40.7779016280345,16E-PM-1018-07,16E,PM,10182018,7,Juvenile,Gray,Cinnamon,Gray+Cinnamon,NA,Above Ground,10,NA,FALSE,FALSE,TRUE,FALSE,FALSE,NA,TRUE,FALSE,FALSE,FALSE,FALSE,FALSE,TRUE,FALSE,NA,POINT (-73.9683345414813 40.7779016280345),NA,19,4,19,13
-73.9639888092327,40.791449395909,31A-AM-1010-01,31A,AM,10102018,1,Adult,Gray,NA,Gray+,NA,Ground Plane,FALSE,NA,FALSE,FALSE,FALSE,TRUE,FALSE,NA,FALSE,FALSE,FALSE,FALSE,TRUE,FALSE,FALSE,TRUE,NA,POINT (-73.9639888092327 40.791449395909005),NA,19,4,19,13
-73.9711178122133,40.7672642958437,4I-PM-1007-01,04I,PM,10072018,1,Adult,Black,NA,Black+,NA,Ground Plane,FALSE,NA,TRUE,FALSE,FALSE,FALSE,TRUE,NA,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,TRUE,NA,POINT (-73.9711178122133 40.76726429584371),NA,19,4,19,13
-73.9690362384597,40.7767162824413,14F-PM-1012-09,14F,PM,10122018,9,Adult,Cinnamon,"Gray, White","Cinnamon+Gray, White",NA,Ground Plane,FALSE,NA,FALSE,FALSE,FALSE,TRUE,TRUE,NA,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,TRUE,FALSE,NA,POINT (-73.9690362384597 40.7767162824413),NA,19,4,19,13
-73.9543044385367,40.7984498571338,41E-AM-1007-04,41E,AM,10072018,4,Adult,Cinnamon,White,Cinnamon+White,white haunches/tail,Ground Plane,FALSE,rubbing belly on ground,FALSE,FALSE,FALSE,FALSE,TRUE,NA,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,TRUE,FALSE,NA,POINT (-73.9543044385367 40.798449857133804),NA,19,4,19,13
-73.970024735090007,40.7836929044459,21A-AM-1019-08,21A,AM,10192018,8,Adult,Gray,Cinnamon,Gray+Cinnamon,NA,Ground Plane,FALSE,NA,FALSE,FALSE,FALSE,TRUE,TRUE,NA,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,TRUE,FALSE,NA,POINT (-73.97002473509 40.7836929044459),NA,19,4,19,13
-73.9675917702187,40.7789922281625,17E-AM-1017-02,17E,AM,10172018,2,Adult,Gray,NA,Gray+,NA,Above Ground,8,Shore,FALSE,FALSE,TRUE,FALSE,TRUE,NA,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,TRUE,FALSE,NA,POINT (-73.9675917702187 40.7789922281625),NA,19,4,19,13
-73.9595002339508,40.7903365788694,32E-PM-1017-13,32E,PM,10172018,13,Adult,Gray,NA,Gray+,Nothing selected as Primary. Gray selected as Highlights. Made executive adjustments.,NA,NA,NA,FALSE,FALSE,FALSE,TRUE,TRUE,NA,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,TRUE,FALSE,NA,POINT (-73.9595002339508 40.7903365788694),NA,19,4,19,13
-73.9579335275486,40.7953080673706,37D-PM-1014-05,37D,PM,10142018,5,Adult,Gray,NA,Gray+,NA,Ground Plane,FALSE,NA,FALSE,FALSE,FALSE,FALSE,TRUE,NA,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,TRUE,NA,POINT (-73.9579335275486 40.7953080673706),NA,19,4,19,13
-73.9565549485301,40.7989823714955,41C-AM-1017-03,41C,AM,10172018,3,Adult,Gray,White,Gray+White,NA,Ground Plane,FALSE,NA,FALSE,FALSE,FALSE,FALSE,TRUE,NA,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,TRUE,FALSE,NA,POINT (-73.9565549485301 40.7989823714955),NA,19,4,19,13
-73.9707197274481,40.7773956803431,14D-PM-1019-12,14D,PM,10192018,12,Adult,Gray,NA,Gray+,NA,NA,NA,NA,FALSE,FALSE,FALSE,FALSE,FALSE,NA,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,NA,POINT (-73.9707197274481 40.7773956803431),NA,19,4,19,13
-73.9694630409125,40.769737659647,8I-PM-1013-01,08I,PM,10132018,1,Adult,Gray,"Cinnamon, White","Gray+Cinnamon, White",NA,Ground Plane,FALSE,NA,FALSE,FALSE,FALSE,FALSE,TRUE,NA,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,TRUE,FALSE,NA,POINT (-73.9694630409125 40.769737659647),NA,19,4,19,13
-73.9553163829551,40.7988610926249,42D-PM-1013-04,42D,PM,10132018,4,Adult,Cinnamon,Gray,Cinnamon+Gray,Light Cinnamon,Ground Plane,FALSE,NA,FALSE,FALSE,FALSE,FALSE,FALSE,carrying nut away,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,TRUE,FALSE,NA,POINT (-73.9553163829551 40.7988610926249),NA,19,4,19,13
-73.951448051873,40.7973951649254,42G-AM-1018-02,42G,AM,10182018,2,Adult,Gray,NA,Gray+,NA,Ground Plane,FALSE,NA,TRUE,FALSE,FALSE,FALSE,FALSE,NA,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,TRUE,FALSE,NA,POINT (-73.951448051873 40.7973951649254),NA,19,4,19,13
-73.9562642076935,40.7983338763074,41C-AM-1017-02,41C,AM,10172018,2,Adult,Cinnamon,Gray,Cinnamon+Gray,NA,Ground Plane,FALSE,NA,FALSE,FALSE,FALSE,FALSE,TRUE,NA,FALSE,FALSE,FALSE,FALSE,FALSE,TRUE,FALSE,FALSE,NA,POINT (-73.9562642076935 40.7983338763074),NA,19,4,19,13
-73.9684758245091,40.7858531619022,24A-PM-1007-02,24A,PM,10072018,2,Adult,Gray,NA,Gray+,NA,Ground Plane,FALSE,NA,TRUE,FALSE,FALSE,FALSE,FALSE,NA,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,TRUE,FALSE,NA,POINT (-73.9684758245091 40.7858531619022),NA,19,4,19,13
-73.9784942525972,40.7672600003683,1D-AM-1006-06,01D,AM,10062018,6,Juvenile,Gray,"Cinnamon, White","Gray+Cinnamon, White",Gray & Cinnamon selected as Primary. White selected as Highlights. Made executive adjustments.,Ground Plane,FALSE,NA,TRUE,FALSE,FALSE,FALSE,FALSE,tumbling,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,NA,POINT (-73.9784942525972 40.7672600003683),NA,19,4,19,13
-73.9558943880051,40.7971535141896,40D-PM-1013-06,40D,PM,10132018,6,Adult,Gray,Cinnamon,Gray+Cinnamon,NA,Above Ground,4,NA,FALSE,FALSE,TRUE,FALSE,FALSE,NA,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,TRUE,NA,POINT (-73.9558943880051 40.7971535141896),NA,19,4,19,13
-73.9615817859213,40.7945839663845,35A-AM-1014-08,35A,AM,10142018,8,Adult,Cinnamon,White,Cinnamon+White,NA,Ground Plane,FALSE,NA,FALSE,FALSE,TRUE,FALSE,FALSE,NA,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,TRUE,FALSE,NA,POINT (-73.9615817859213 40.79458396638451),NA,19,4,19,13
-73.9616693665254,40.792971019627,33B-AM-1010-05,33B,AM,10102018,5,Adult,Gray,White,Gray+White,NA,Ground Plane,FALSE,NA,FALSE,FALSE,FALSE,FALSE,TRUE,NA,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,TRUE,NA,POINT (-73.9616693665254 40.792971019627),NA,19,4,19,13
-73.9665705456197,40.7823552871044,21D-PM-1008-05,21D,PM,10082018,5,Adult,Gray,Cinnamon,Gray+Cinnamon,NA,Ground Plane,FALSE,NA,FALSE,FALSE,FALSE,FALSE,TRUE,NA,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,NA,POINT (-73.9665705456197 40.7823552871044),NA,19,4,19,13
-73.980854228628,40.7678702158382,1B-AM-1012-17,01B,AM,10122018,17,Adult,Gray,"Cinnamon, White","Gray+Cinnamon, White",NA,Ground Plane,FALSE,NA,FALSE,FALSE,TRUE,TRUE,TRUE,NA,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,TRUE,FALSE,NA,POINT (-73.98085422862802 40.7678702158382),NA,19,4,19,13
-73.9578658632957,40.7933712188923,35E-AM-1020-04,35E,AM,10202018,4,Adult,Gray,Cinnamon,Gray+Cinnamon,NA,Above Ground,30,NA,FALSE,FALSE,FALSE,FALSE,FALSE,"hunkered down,tail over body; sitting perfectly still",FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,TRUE,FALSE,NA,POINT (-73.9578658632957 40.7933712188923),NA,19,4,19,13
-73.9538251716292,40.7919360198175,35I-PM-1006-01,35I,PM,10062018,1,Adult,Gray,Cinnamon,Gray+Cinnamon,NA,Ground Plane,FALSE,NA,FALSE,FALSE,FALSE,FALSE,TRUE,NA,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,TRUE,FALSE,NA,POINT (-73.9538251716292 40.7919360198175),NA,19,4,19,13
-73.9693504617353,40.7830678709405,21B-PM-1017-02,21B,PM,10172018,2,Juvenile,Cinnamon,White,Cinnamon+White,NA,Above Ground,1,NA,FALSE,TRUE,FALSE,FALSE,FALSE,NA,FALSE,TRUE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,stood on hind legs with front legs on the chest,POINT (-73.9693504617353 40.7830678709405),NA,19,4,19,13
-73.9631089011412,40.789191946875,29C-PM-1006-02,29C,PM,10062018,2,Adult,Gray,Cinnamon,Gray+Cinnamon,NA,Ground Plane,FALSE,NA,FALSE,TRUE,FALSE,FALSE,FALSE,NA,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,NA,POINT (-73.9631089011412 40.789191946875),NA,19,4,19,13
-73.9561840935803,40.799203782149696,42C-PM-1013-05,42C,PM,10132018,5,Adult,Gray,NA,Gray+,NA,Above Ground,20,NA,FALSE,FALSE,FALSE,TRUE,FALSE,NA,TRUE,FALSE,FALSE,FALSE,FALSE,FALSE,TRUE,FALSE,NA,POINT (-73.9561840935803 40.7992037821497),NA,19,4,19,13
-73.9620964576469,40.7917332001738,32C-PM-1013-01,32C,PM,10132018,1,Adult,Gray,NA,Gray+,NA,Ground Plane,FALSE,NA,FALSE,FALSE,FALSE,FALSE,TRUE,NA,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,NA,POINT (-73.9620964576469 40.7917332001738),NA,19,4,19,13
-73.9713330594434,40.7771924214236,14D-AM-1014-10,14D,AM,10142018,10,Adult,Gray,"Cinnamon, White","Gray+Cinnamon, White",NA,Ground Plane,FALSE,NA,FALSE,FALSE,FALSE,FALSE,TRUE,NA,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,TRUE,FALSE,NA,POINT (-73.9713330594434 40.7771924214236),NA,19,4,19,13
-73.9663297144622,40.7837932023685,22D-PM-1012-03,22D,PM,10122018,3,Adult,Gray,"Black, White","Gray+Black, White",NA,Ground Plane,FALSE,NA,FALSE,FALSE,FALSE,FALSE,TRUE,NA,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,TRUE,FALSE,NA,POINT (-73.9663297144622 40.7837932023685),NA,19,4,19,13
-73.9603597117619,40.7824399298414,23I-PM-1019-02,23I,PM,10192018,2,Adult,Gray,NA,Gray+,NA,Ground Plane,FALSE,NA,FALSE,FALSE,TRUE,FALSE,FALSE,NA,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,NA,POINT (-73.9603597117619 40.7824399298414),NA,19,4,19,13
-73.9787040192473,40.7679010247281,2C-AM-1010-06,02C,AM,10102018,6,Adult,Gray,NA,Gray+,NA,Ground Plane,FALSE,NA,FALSE,FALSE,FALSE,FALSE,FALSE,stood still & watched me then jumped on a fence and ran away,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,TRUE,TRUE,NA,POINT (-73.9787040192473 40.7679010247281),NA,19,4,19,13
-73.9724879969884,40.771098202397,8F-PM-1012-07,08F,PM,10122018,7,Adult,Gray,Cinnamon,Gray+Cinnamon,NA,Above Ground,17,NA,FALSE,FALSE,TRUE,FALSE,FALSE,gathering,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,NA,POINT (-73.9724879969884 40.771098202397),NA,19,4,19,13
-73.9706903740547,40.7726873760687,10G-AM-1006-07,10G,AM,10062018,7,Adult,Gray,NA,Gray+,NA,Ground Plane,FALSE,NA,FALSE,FALSE,FALSE,TRUE,FALSE,NA,FALSE,FALSE,FALSE,FALSE,TRUE,FALSE,TRUE,FALSE,NA,POINT (-73.9706903740547 40.77268737606871),NA,19,4,19,13
-73.9688454483585,40.7845301288163,22A-AM-1008-05,22A,AM,10082018,5,Adult,Gray,White,Gray+White,NA,Above Ground,3,trash can,FALSE,FALSE,FALSE,TRUE,FALSE,NA,FALSE,FALSE,FALSE,TRUE,FALSE,FALSE,FALSE,TRUE,NA,POINT (-73.9688454483585 40.7845301288163),NA,19,4,19,13
-73.9754836796706,40.7738879545412,9B-PM-1013-01,09B,PM,10132018,1,Juvenile,Gray,Cinnamon,Gray+Cinnamon,NA,Ground Plane,FALSE,NA,FALSE,FALSE,FALSE,FALSE,FALSE,playing,FALSE,FALSE,FALSE,FALSE,TRUE,FALSE,TRUE,FALSE,NA,POINT (-73.9754836796706 40.7738879545412),NA,19,4,19,13
-73.968367485157,40.7838472644815,22B-PM-1014-05,22B,PM,10142018,5,NA,Gray,Cinnamon,Gray+Cinnamon,NA,Ground Plane,FALSE,NA,FALSE,FALSE,FALSE,TRUE,FALSE,eating (eats with head tilted far to the right (tooth issue?)),FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,NA,POINT (-73.968367485157 40.7838472644815),NA,19,4,19,13
-73.9753818829907,40.7697840986163,5D-PM-1018-06,05D,PM,10182018,6,Adult,Gray,NA,Gray+,NA,Ground Plane,FALSE,NA,FALSE,FALSE,FALSE,FALSE,TRUE,NA,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,TRUE,FALSE,NA,POINT (-73.9753818829907 40.7697840986163),NA,19,4,19,13
-73.9588358879692,40.7912631913057,33E-PM-1012-01,33E,PM,10122018,1,Adult,Gray,White,Gray+White,NA,Ground Plane,FALSE,NA,FALSE,FALSE,FALSE,TRUE,TRUE,NA,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,TRUE,NA,POINT (-73.9588358879692 40.7912631913057),NA,19,4,19,13
-73.9728654439465,40.7724853142211,9E-AM-1008-04,09E,AM,10082018,4,Adult,Gray,White,Gray+White,NA,Ground Plane,FALSE,NA,FALSE,FALSE,FALSE,TRUE,FALSE,NA,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,TRUE,FALSE,NA,POINT (-73.9728654439465 40.7724853142211),NA,19,4,19,13
-73.9642411990432,40.7779692777193,18H-PM-1014-03,18H,PM,10142018,3,Adult,Gray,Cinnamon,Gray+Cinnamon,NA,Ground Plane,FALSE,NA,FALSE,FALSE,FALSE,FALSE,TRUE,NA,FALSE,FALSE,FALSE,TRUE,FALSE,FALSE,TRUE,FALSE,NA,POINT (-73.9642411990432 40.7779692777193),NA,19,4,19,13
-73.9549860947234,40.7911550328309,34H-PM-1006-07,34H,PM,10062018,7,Juvenile,Gray,White,Gray+White,white belly,Above Ground,20,NA,FALSE,FALSE,TRUE,FALSE,FALSE,NA,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,TRUE,NA,POINT (-73.9549860947234 40.7911550328309),NA,19,4,19,13
-73.9714637683084,40.7768984561563,14D-PM-1019-01,14D,PM,10192018,1,Adult,Gray,NA,Gray+,NA,Ground Plane,FALSE,NA,FALSE,TRUE,FALSE,FALSE,FALSE,NA,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,NA,POINT (-73.9714637683084 40.7768984561563),NA,19,4,19,13
-73.966590487009,40.7802469052891,19E-PM-1018-02,19E,PM,10182018,2,Adult,Gray,White,Gray+White,NA,Ground Plane,FALSE,NA,TRUE,FALSE,TRUE,FALSE,FALSE,NA,FALSE,FALSE,FALSE,TRUE,FALSE,FALSE,FALSE,FALSE,NA,POINT (-73.96659048700901 40.7802469052891),NA,19,4,19,13
-73.9679309130266,40.7792437838039,17E-AM-1017-04,17E,AM,10172018,4,Adult,Gray,NA,Gray+,NA,Ground Plane,FALSE,Shore,FALSE,FALSE,FALSE,FALSE,TRUE,NA,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,NA,POINT (-73.9679309130266 40.779243783803906),NA,19,4,19,13
-73.9734762649298,40.7663703404546,3H-AM-1008-05,03H,AM,10082018,5,Adult,Gray,Cinnamon,Gray+Cinnamon,NA,Above Ground,13,NA,FALSE,FALSE,TRUE,FALSE,FALSE,NA,FALSE,FALSE,FALSE,FALSE,TRUE,FALSE,FALSE,FALSE,NA,POINT (-73.9734762649298 40.7663703404546),NA,19,4,19,13
-73.9617612388703,40.7952875954297,35A-AM-1014-04,35A,AM,10142018,4,Adult,Gray,"Cinnamon, White","Gray+Cinnamon, White",NA,Ground Plane,FALSE,NA,FALSE,FALSE,FALSE,FALSE,TRUE,NA,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,TRUE,FALSE,NA,POINT (-73.9617612388703 40.7952875954297),NA,19,4,19,13
-73.9546042927016,40.7898133734952,33I-PM-1006-07,33I,PM,10062018,7,Adult,Gray,NA,Gray+,NA,Ground Plane,FALSE,NA,TRUE,FALSE,FALSE,FALSE,FALSE,NA,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,TRUE,NA,POINT (-73.9546042927016 40.7898133734952),NA,19,4,19,13
-73.9744368038675,40.7674281958115,3G-PM-1013-03,03G,PM,10132018,3,Adult,Gray,NA,Gray+,NA,Ground Plane,FALSE,NA,FALSE,FALSE,TRUE,FALSE,FALSE,NA,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,TRUE,runs from (climbed tree to run from),POINT (-73.97443680386752 40.7674281958115),NA,19,4,19,13
-73.9700785314537,40.777714111862,15D-AM-1007-01,15D,AM,10072018,1,Adult,Gray,NA,Gray+,NA,Ground Plane,FALSE,NA,FALSE,FALSE,FALSE,FALSE,TRUE,NA,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,TRUE,FALSE,NA,POINT (-73.9700785314537 40.777714111862),NA,19,4,19,13
-73.956737220098,40.797580989255,40C-PM-1006-01,40C,PM,10062018,1,Adult,Gray,NA,Gray+,NA,Ground Plane,FALSE,NA,TRUE,FALSE,FALSE,FALSE,FALSE,NA,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,NA,POINT (-73.95673722009802 40.797580989255),NA,19,4,19,13
-73.9708002461415,40.7726685284831,10F-PM-1019-10,10F,PM,10192018,10,Adult,Gray,Cinnamon,Gray+Cinnamon,NA,Ground Plane,FALSE,Arbor path & hill w/ bushes,TRUE,FALSE,FALSE,TRUE,TRUE,NA,FALSE,FALSE,FALSE,FALSE,TRUE,FALSE,TRUE,FALSE,NA,POINT (-73.9708002461415 40.7726685284831),NA,19,4,19,13
-73.973998077367,40.7739029133911,10C-PM-1013-01,10C,PM,10132018,1,Adult,Gray,Cinnamon,Gray+Cinnamon,NA,Ground Plane,FALSE,NA,FALSE,FALSE,FALSE,FALSE,TRUE,NA,FALSE,FALSE,FALSE,FALSE,TRUE,FALSE,FALSE,TRUE,NA,POINT (-73.973998077367 40.7739029133911),NA,19,4,19,13
-73.9694066600156,40.7805662180672,18C-PM-1018-06,18C,PM,10182018,6,Juvenile,Gray,"Cinnamon, White","Gray+Cinnamon, White",NA,Above Ground,1,NA,FALSE,FALSE,TRUE,TRUE,TRUE,NA,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,TRUE,FALSE,NA,POINT (-73.9694066600156 40.7805662180672),NA,19,4,19,13
-73.9545399102352,40.7898646267709,33I-PM-1006-06,33I,PM,10062018,6,Adult,Gray,NA,Gray+,NA,Ground Plane,FALSE,NA,TRUE,FALSE,FALSE,FALSE,FALSE,NA,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,TRUE,NA,POINT (-73.9545399102352 40.7898646267709),NA,19,4,19,13
-73.9747175419546,40.7692820030878,5E-PM-1012-05,05E,PM,10122018,5,Adult,Cinnamon,"Gray, White","Cinnamon+Gray, White",NA,Ground Plane,FALSE,NA,TRUE,FALSE,FALSE,FALSE,TRUE,NA,FALSE,FALSE,FALSE,FALSE,FALSE,TRUE,FALSE,FALSE,begging,POINT (-73.9747175419546 40.7692820030878),NA,19,4,19,13
-73.9730813162152,40.7779315720879,14B-AM-1007-02,14B,AM,10072018,2,Adult,Gray,NA,Gray+,NA,Ground Plane,FALSE,NA,FALSE,FALSE,FALSE,FALSE,TRUE,NA,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,TRUE,FALSE,NA,POINT (-73.9730813162152 40.7779315720879),NA,19,4,19,13
-73.9562350820255,40.7913464147989,34G-PM-1006-02,34G,PM,10062018,2,Adult,Gray,NA,Gray+,NA,Above Ground,6,NA,FALSE,FALSE,TRUE,TRUE,TRUE,eating bread it found on ground,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,TRUE,NA,POINT (-73.9562350820255 40.7913464147989),NA,19,4,19,13
-73.97016933635,40.7705452529783,8H-AM-1017-05,08H,AM,10172018,5,Adult,Gray,Cinnamon,Gray+Cinnamon,NA,Above Ground,6,NA,TRUE,FALSE,FALSE,TRUE,TRUE,NA,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,TRUE,FALSE,NA,POINT (-73.97016933635001 40.7705452529783),NA,19,4,19,13
-73.9714921188372,40.776758371867,14D-AM-1014-11,14D,AM,10142018,11,Adult,Gray,"Cinnamon, White","Gray+Cinnamon, White",NA,Ground Plane,FALSE,NA,FALSE,FALSE,FALSE,FALSE,TRUE,NA,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,TRUE,FALSE,NA,POINT (-73.9714921188372 40.776758371867),NA,19,4,19,13
-73.9767220179725,40.7753262103123,10A-PM-1014-03,10A,PM,10142018,3,Adult,Gray,"Black, Cinnamon, White","Gray+Black, Cinnamon, White",NA,Above Ground,NA,above my head in tree,FALSE,FALSE,FALSE,TRUE,FALSE,eating (in a tree),FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,TRUE,FALSE,"indifferent (lots of people taking its picture,didn't bother it)",POINT (-73.9767220179725 40.7753262103123),12420,20,4,19,12
-73.9553811810434,40.7970895007931,40E-AM-1014-02,40E,AM,10142018,2,Adult,Gray,White,Gray+White,NA,Ground Plane,FALSE,NA,TRUE,FALSE,FALSE,FALSE,TRUE,NA,FALSE,FALSE,FALSE,FALSE,TRUE,FALSE,TRUE,FALSE,NA,POINT (-73.9553811810434 40.7970895007931),NA,19,4,19,13
-73.9611274898661,40.7915250069086,32C-AM-1014-05,32C,AM,10142018,5,Adult,Cinnamon,NA,Cinnamon+,NA,Ground Plane,FALSE,NA,FALSE,FALSE,FALSE,TRUE,TRUE,NA,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,TRUE,FALSE,NA,POINT (-73.9611274898661 40.7915250069086),NA,19,4,19,13
-73.9679955831115,40.7818431607916,20C-PM-1018-04,20C,PM,10182018,4,Adult,Gray,NA,Gray+,NA,Above Ground,8,NA,FALSE,FALSE,TRUE,FALSE,FALSE,NA,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,NA,POINT (-73.9679955831115 40.7818431607916),NA,19,4,19,13
-73.9558589529608,40.7892400394941,32H-PM-1006-02,32H,PM,10062018,2,NA,Gray,NA,Gray+,NA,Above Ground,8,NA,FALSE,FALSE,TRUE,FALSE,FALSE,NA,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,NA,POINT (-73.9558589529608 40.7892400394941),NA,19,4,19,13
-73.9672054610151,40.7876519923501,26A-PM-1006-05,26A,PM,10062018,5,Adult,Gray,NA,Gray+,NA,Above Ground,40,NA,FALSE,TRUE,FALSE,FALSE,FALSE,NA,FALSE,FALSE,FALSE,FALSE,TRUE,FALSE,FALSE,FALSE,NA,POINT (-73.9672054610151 40.7876519923501),NA,19,4,19,13
-73.9683041099256,40.7862652300082,24A-AM-1014-01,24A,AM,10142018,1,Adult,Gray,White,Gray+White,NA,Ground Plane,FALSE,NA,TRUE,FALSE,FALSE,FALSE,FALSE,NA,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,freezes,POINT (-73.9683041099256 40.7862652300082),NA,19,4,19,13
---
title: "Cr\u00e9ation des tables finales"
output: html_document
editor_options:
chunk_output_type: console
---
```{r development, include=FALSE}
library(testthat)
library(glue)
library(DBI)
library(datalibaba)
```
```{r development-load}
# Load already included functions if relevant
pkgload::load_all(export_all = FALSE)
```
# Présentation
> Cette page contient la logique métier concernant la création des tables de prélèvements et d'analyses concernant les nitrates.
# Table des prélèvements
```{r function-create_nitrate_prelevement_table}
#' Créer une table de prélèvements de nitrates
#'
#' @description Cette fonction crée une table dans une base de données PostgreSQL
#' pour stocker les informations relatives aux prélèvements de nitrates,
#' incluant les contraintes et les séquences nécessaires.
#'
#' @param version String. Version de la table (par exemple, 'v1').
#' @param last_year Integer. L'année la plus récente incluse dans les données de la table.
#' @param connexion DBIConnection. Connexion active à la base de données PostgreSQL.
#'
#' @return String. Le script SQL utilisé pour créer la table.
#' @export
#' @importFrom datalibaba connect_to_db
create_nitrate_prelevement_table <- function(version, last_year, connexion) {
# Génération de la date du jour
date_now <- format(Sys.Date(), "%d/%m/%Y")
# Création du script avec l'ajout des paramètres
sql_script <- glue::glue("
CREATE TABLE IF NOT EXISTS nitrates.nitrate_prelevement_{version}
(
code_prelevement serial NOT NULL,
code_intervenant character varying(20),
source character varying(10),
code_reseau character varying(254),
code_station character varying(10),
date_prelevement date,
heure_prelevement character varying(8),
code_support int,
id_usage character varying(3),
id_prelevement_motif character varying(2),
commentaire character varying(254),
CONSTRAINT pk_nitrate_prelevement_{version} PRIMARY KEY (code_prelevement),
CONSTRAINT fk_n_support FOREIGN KEY (code_support)
REFERENCES sandre.n_support (code_support) MATCH SIMPLE
ON UPDATE CASCADE ON DELETE SET DEFAULT
)
WITH (
OIDS=FALSE
);
ALTER TABLE nitrates.nitrate_prelevement_{version}
OWNER TO adminpsql;
GRANT ALL ON TABLE nitrates.nitrate_prelevement_{version} TO adminpsql;
GRANT ALL ON TABLE nitrates.nitrate_prelevement_{version} TO writer_production;
GRANT SELECT ON TABLE nitrates.nitrate_prelevement_{version} TO reader_production;
COMMENT ON TABLE nitrates.nitrate_prelevement_{version}
IS 'Table des pr\u00e9l\u00e8vements 2007-{last_year} (version {version} du {date_now})';
COMMENT ON COLUMN nitrates.nitrate_prelevement_{version}.code_prelevement IS 'Identifiant du pr\u00e9l\u00e8vement';
COMMENT ON COLUMN nitrates.nitrate_prelevement_{version}.code_intervenant IS 'Identifiant de l''intervenant';
COMMENT ON COLUMN nitrates.nitrate_prelevement_{version}.source IS 'Source de la donn\u00e9e';
COMMENT ON COLUMN nitrates.nitrate_prelevement_{version}.code_reseau IS 'Identifiant du r\u00e9seau';
COMMENT ON COLUMN nitrates.nitrate_prelevement_{version}.code_station IS 'Identifiant de la station';
COMMENT ON COLUMN nitrates.nitrate_prelevement_{version}.date_prelevement IS 'Date du pr\u00e9l\u00e8vement';
COMMENT ON COLUMN nitrates.nitrate_prelevement_{version}.heure_prelevement IS 'Heure du pr\u00e9l\u00e8vement';
COMMENT ON COLUMN nitrates.nitrate_prelevement_{version}.code_support IS 'Code du support de pr\u00e9l\u00e8vement';
COMMENT ON COLUMN nitrates.nitrate_prelevement_{version}.id_usage IS 'Code de l''usage du pr\u00e9l\u00e8vement';
COMMENT ON COLUMN nitrates.nitrate_prelevement_{version}.id_prelevement_motif IS 'Code du motif du pr\u00e9l\u00e8vement';
COMMENT ON COLUMN nitrates.nitrate_prelevement_{version}.commentaire IS 'Commentaire';
CREATE SEQUENCE IF NOT EXISTS nitrates.nitrate_prelevement_{version}_code_prelevement_seq
INCREMENT 1
START 1
MINVALUE 1
MAXVALUE 2147483647
CACHE 1;
ALTER SEQUENCE nitrates.nitrate_prelevement_{version}_code_prelevement_seq
OWNER TO adminpsql;
")
# Exécution du script dans la base de données
DBI::dbExecute(connexion, sql_script)
# Fermeture de la connexion à la base de données
DBI::dbDisconnect(connexion)
return(sql_script)
}
```
```{r examples-create_nitrate_prelevement_table, eval=FALSE}
# Connexion à la base de données
connexion <- datalibaba::connect_to_db(db = "si_eau", user = "admin")
# Création du script SQL avec la version choisie
version <- "v0_15"
last_year <- "2023"
sql <- create_nitrate_prelevement_table(version, last_year, connexion)
```
```{r function-create_nitrate_analyse_table}
#' Créer une table d'analyses de nitrates
#'
#' @description Cette fonction crée une table dans une base de données PostgreSQL
#' pour stocker les informations relatives aux analyses de nitrates, incluant
#' les contraintes et les séquences nécessaires.
#'
#' @param version String. Version de la table (par exemple, 'v1').
#' @param last_year Integer. L'année la plus récente incluse dans les données de la table.
#' @param connexion DBIConnection. Connexion active à la base de données PostgreSQL.
#'
#' @return String. Le script SQL utilisé pour créer la table.
#' @export
#' @importFrom datalibaba connect_to_db
create_nitrate_analyse_table <- function(version, last_year, connexion) {
# Génération de la date du jour
date_now <- format(Sys.Date(), "%d/%m/%Y")
# Création du script avec l'ajout des paramètres
sql_script <- glue::glue("
CREATE TABLE IF NOT EXISTS nitrates.nitrate_analyse_{version}
(
code_analyse serial NOT NULL,
code_intervenant character varying(20),
code_prelevement integer,
code_parametre bigint,
code_fraction_analysee integer,
date_analyse date,
resultat_analyse double precision,
code_remarque integer,
limite_detection double precision,
limite_quantification double precision,
CONSTRAINT pk_nitrate_analyse_{version} PRIMARY KEY (code_analyse),
CONSTRAINT fk_n_fraction_analysee FOREIGN KEY (code_fraction_analysee)
REFERENCES sandre.n_fraction_analysee (code_fraction_analysee) MATCH SIMPLE
ON UPDATE CASCADE ON DELETE SET DEFAULT,
-- CONSTRAINT fk_n_intervenant FOREIGN KEY (code_intervenant)
-- REFERENCES qualite_cours_d_eau.n_intervenant (code_intervenant) MATCH SIMPLE
-- ON UPDATE CASCADE ON DELETE SET DEFAULT,
CONSTRAINT fk_n_remarque FOREIGN KEY (code_remarque)
REFERENCES sandre.n_remarque (code_remarque) MATCH SIMPLE
ON UPDATE NO ACTION ON DELETE NO ACTION,
CONSTRAINT fk_parametre FOREIGN KEY (code_parametre)
REFERENCES qualite_cours_d_eau.parametre (code_parametre) MATCH SIMPLE
ON UPDATE CASCADE ON DELETE SET DEFAULT
)
WITH (
OIDS=FALSE
);
ALTER TABLE nitrates.nitrate_analyse_{version}
OWNER TO adminpsql;
GRANT ALL ON TABLE nitrates.nitrate_analyse_{version} TO adminpsql;
GRANT ALL ON TABLE nitrates.nitrate_analyse_{version} TO writer_production;
GRANT SELECT ON TABLE nitrates.nitrate_analyse_{version} TO reader_production;
COMMENT ON TABLE nitrates.nitrate_analyse_{version}
IS 'Table des analyses 2007-{last_year} (version {version} du {date_now})';
COMMENT ON COLUMN nitrates.nitrate_analyse_{version}.code_analyse IS 'Identifiant de l''analyse';
COMMENT ON COLUMN nitrates.nitrate_analyse_{version}.code_intervenant IS 'Identifiant du laboratoire ayant effectu\u00e9 l''analyse';
COMMENT ON COLUMN nitrates.nitrate_analyse_{version}.code_prelevement IS 'Identifiant du pr\u00e9l\u00e8vement';
COMMENT ON COLUMN nitrates.nitrate_analyse_{version}.code_parametre IS 'Identifiant du param\u00e8tre analys\u00e9';
COMMENT ON COLUMN nitrates.nitrate_analyse_{version}.code_fraction_analysee IS 'Identifiant de la fraction analys\u00e9e';
COMMENT ON COLUMN nitrates.nitrate_analyse_{version}.date_analyse IS 'Date de l''analyse';
COMMENT ON COLUMN nitrates.nitrate_analyse_{version}.resultat_analyse IS 'R\u00e9sultat de l''analyse';
COMMENT ON COLUMN nitrates.nitrate_analyse_{version}.code_remarque IS 'Code validant la donn\u00e9e';
COMMENT ON COLUMN nitrates.nitrate_analyse_{version}.limite_detection IS 'Limite de d\u00e9tection';
COMMENT ON COLUMN nitrates.nitrate_analyse_{version}.limite_quantification IS 'Limite de quantification';
CREATE SEQUENCE IF NOT EXISTS nitrates.nitrate_analyse_{version}_code_analyse_seq
INCREMENT 1
START 1
MINVALUE 1
MAXVALUE 2147483647
CACHE 1;
ALTER SEQUENCE nitrates.nitrate_analyse_{version}_code_analyse_seq
OWNER TO adminpsql;
")
# Exécution du script dans la base de données
DBI::dbExecute(connexion, sql_script)
# Fermeture de la connexion à la base de données
DBI::dbDisconnect(connexion)
return(sql_script)
}
```
```{r examples-create_nitrate_analyse_table, eval=FALSE}
# Connexion à la base de données
connexion <- datalibaba::connect_to_db(db = "si_eau", user = "admin")
# Création du script SQL avec la version choisie
version <- "v0_15"
last_year <- "2023"
sql <- create_nitrate_analyse_table(version, last_year, connexion)
```
```{r development-inflate, eval=FALSE}
# Run but keep eval=FALSE to avoid infinite loop
# Execute in the console directly
fusen::inflate(flat_file = "dev/flat_create_tables.Rmd", vignette_name = "Cr\u00e9ation des tables finales")
```
name: Création des tables finales
description: >
Création des tables finales
create_dir: FALSE
---
title: "Import des données ARS"
output: html_document
editor_options:
chunk_output_type: console
---
```{r development, include=FALSE}
library(testthat)
library(xlsx)
library(datalibaba)
library(RPostgreSQL)
library(sf)
library(collectr)
library(dplyr)
```
```{r development-load}
# Load already included functions if relevant
pkgload::load_all(export_all = FALSE)
```
# Présentation
Cette page contient la logique métier concernant l'import des données brutes
fournies par l'ARS dans une base de données POstgreSQL dans le cadre du projet
Nitrates
# Connexion à la base de données PostgreSQL
```{r connect_to_db, eval=FALSE}
# Se connecter à la base de données PostgreSQL si_eau
connexion <- datalibaba::connect_to_db(db = "si_eau", user = "admin")
```
```{r list_schemas, eval=FALSE}
# Lister les schémas présents dans la base
schemas_list <- data.frame(datalibaba::list_schemas(connexion))
# Renommer la variable unique en "nom_schema"
schemas_list <- schemas_list |>
rename(nom_schema = unique(names(.)))
# Trier le dataframe par la variable nom_schema
schemas_list <- schemas_list |>
arrange(nom_schema)
```
```{r list_tables, eval=FALSE}
# Lister les tables présentes dans le schéma spécifié
tables_list <- data.frame(datalibaba::list_tables(
con = connexion,
db = "si_eau",
schema = "nitrates"))
# Renommer la variable unique en "nom_table"
tables_list <- tables_list |>
rename(nom_table = names(tables_list)[1])
# Trier le dataframe par la variable nom_table
tables_list <- tables_list |>
arrange(nom_table)
```
# Import des données de l'ARS dans un dataframe par millésime
Les données sont transmies au format XLSX.
```{r import_data_ars_2023, eval=FALSE}
data_ars_2023 <- collectr::import_xlsx(
filepath = "T:\\datalab\\SRNP_DEMA_SI_EAU\\NITRATES\\DONNEES_CLIENT\\SOURCES\\ARS\\2024_06\\Nitrates 2023 pour DREAL EPNT4 2024-05-31.xlsx",
sheet = 1,
row = 2)
```
# Création d'une table pour le nouveau millésime
```{r create-nitrate_data_ars, eval=FALSE}
# Charger les données dans une nouvelle table en base
datalibaba::poster_data(data = data_ars_2023,
table = "nitrate_data_analyse_ars_2023",
schema = "nitrates",
db = "si_eau",
overwrite = TRUE,
user = "admin")
# Ajouter un commentaire sur la table
datalibaba::commenter_table(comment = "Analyses Nitrates ARS (2023)",
table = "nitrate_data_analyse_ars_2023",
schema = "nitrates",
db = "si_eau",
user = "admin")
```
# Modification du type des champs si besoin
```{r modify_column_type, eval=FALSE}
# Modifier le type de colonne pour les champs de date
collectr::modify_column_type(database = "si_eau",
schema = "nitrates",
table = "nitrate_data_analyse_ars_2023",
column_name = "plv_date",
column_type = "date",
role = "admin")
```
# Archivage de la version précédente de la table
```{r archive_table, eval=FALSE}
# Archiver la version actuelle de la table avec tous les millésimes
collectr::archive_table(database = "si_eau",
schema = "nitrates",
new_schema = "zz_archives",
table = "nitrate_data_analyse_ars",
role = "admin")
```
# Insertion des données du nouveau millésime en base dans la table globale
```{r import_and_merge_tables, eval=FALSE}
# Insérer les données de la table du dernier millésime vers la table complète
collectr::import_and_merge_tables(database = "si_eau",
source_table = "nitrate_data_analyse_ars_2023",
source_schema = "nitrates",
target_table = "nitrate_data_analyse_ars",
target_schema = "nitrates",
role = "admin")
# Actualiser le commentaire sur la table
datalibaba::commenter_table(comment = "Analyses Nitrates ARS (2007-2023)",
table = "nitrate_data_analyse_ars",
schema = "nitrates",
db = "si_eau",
user = "admin")
```
```{r development-inflate, eval=FALSE}
# Run but keep eval=FALSE to avoid infinite loop
# Execute in the console directly
fusen::inflate(flat_file = "dev/flat_import_ars_data.Rmd", vignette_name = "Import des données ARS")
```
name: Import des données ARS
description: >
Import des données ARS
create_dir: FALSE
---
title: "Import des données Hub'eau ESO"
output: html_document
editor_options:
chunk_output_type: console
---
```{r development, include=FALSE}
library(testthat)
library(hubeau)
library(datalibaba)
library(RPostgreSQL)
library(sf)
library(collectr)
library(dplyr)
```
```{r development-1}
# Load already included functions
pkgload::load_all(export_all = FALSE)
```
# Présentation
> Cette page contient la logique métier concernant l'import des données de
l'[API Hub'eau "Qualité des nappes d'eau souterraine"](https://hubeau.eaufrance.fr/page/api-qualite-nappes) dans le cadre du projet Nitrates
# Connexion à la base de données PostgreSQL
```{r connect_to_db, eval=FALSE}
# Se connecter à la base de données PostgreSQL si_eau
connexion <- datalibaba::connect_to_db(db = "si_eau", user = "admin")
```
```{r list_schemas, eval=FALSE}
# Lister les schémas présents dans la base
schemas_list <- data.frame(datalibaba::list_schemas(connexion))
# Renommer la variable unique en "nom_schema"
schemas_list <- schemas_list |>
rename(nom_schema = unique(names(.)))
# Trier le dataframe par la variable nom_schema
schemas_list <- schemas_list |>
arrange(nom_schema)
```
```{r list_tables, eval=FALSE}
# Lister les tables présentes dans le schéma spécifié
tables_list <- data.frame(datalibaba::list_tables(
con = connexion,
db = "si_eau",
schema = "qualite_cours_d_eau"))
# Renommer la variable unique en "nom_table"
tables_list <- tables_list |>
rename(nom_table = names(tables_list)[1])
# Trier le dataframe par la variable nom_table
tables_list <- tables_list |>
arrange(nom_table)
```
# Import des données Hub'eau ESU dans un dataframe par millésime
On utilise la fonction `get_qualite_nappes_analyses()` du package [{hubeau}](https://github.com/inrae/hubeau)
```{r create-nitrate_analyse_esu_2020, eval=FALSE}
nitrate_analyse_eso_2020 <- hubeau::get_qualite_nappes_analyses(code_param = "1340",
code_region = "52",
date_debut_prelevement = "2020-01-01",
date_fin_prelevement = "2020-12-31",
size = "5000")
```
```{r create-nitrate_analyse_esu_2021, eval=FALSE}
nitrate_analyse_eso_2021 <- hubeau::get_qualite_nappes_analyses(code_param = "1340",
code_region = "52",
date_debut_prelevement = "2021-01-01",
date_fin_prelevement = "2021-12-31",
size = "5000")
```
```{r create-nitrate_analyse_esu_2022, eval=FALSE}
nitrate_analyse_eso_2022 <- hubeau::get_qualite_nappes_analyses(code_param = "1340",
code_region = "52",
date_debut_prelevement = "2022-01-01",
date_fin_prelevement = "2022-12-31",
size = "5000")
```
```{r create-nitrate_analyse_esu_2023, eval=FALSE}
nitrate_analyse_eso_2023 <- hubeau::get_qualite_nappes_analyses(code_param = "1340",
code_region = "52",
date_debut_prelevement = "2023-01-01",
date_fin_prelevement = "2023-12-31",
size = "5000")
```
# Création d'une table pour le nouveau millésime
```{r create-nitrate_data_ars, eval=FALSE}
# Charger les données dans une nouvelle table en base
datalibaba::poster_data(data = nitrate_analyse_eso_2023,
table = "nitrate_qualite_nappes_analyses_2023",
schema = "qualite_nappes_eau_souterraine",
db = "si_eau",
overwrite = TRUE,
user = "admin")
# Ajouter un commentaire sur la table
datalibaba::commenter_table(comment = "Analyses \"Nitrates\" ESO issues de l''API Hub''eau qualite_nappes : données brutes",
table = "nitrate_qualite_nappes_analyses_2023",
schema = "qualite_nappes_eau_souterraine",
db = "si_eau",
user = "admin")
```
# Modification du type des champs si besoin
```{r modify_column_type, eval=FALSE}
# Modifier le type de colonne pour les champs de date
collectr::modify_column_type(database = "si_eau",
schema = "qualite_nappes_eau_souterraine",
table = "nitrate_qualite_nappes_analyses_2023",
column_name = "date_debut_prelevement",
column_type = "date",
role = "admin")
```
# Archivage de la version précédente de la table
```{r archive_table, eval=FALSE}
# Archiver la version actuelle de la table avec tous les millésimes
collectr::archive_table(database = "si_eau",
schema = "qualite_nappes_eau_souterraine",
new_schema = "zz_archives",
table = "nitrate_qualite_nappes_analyses",
role = "admin")
```
# Insertion des données du nouveau millésime en base dans la table globale
```{r import_and_merge_tables, eval=FALSE}
# Insérer les données de la table du dernier millésime vers la table complète
collectr::import_and_merge_tables(database = "si_eau",
source_table = "nitrate_qualite_nappes_analyses_2023",
source_schema = "qualite_nappes_eau_souterraine",
target_table = "nitrate_qualite_nappes_analyses",
target_schema = "qualite_nappes_eau_souterraine",
role = "admin")
# Actualiser le commentaire sur la table
datalibaba::commenter_table(comment = "Analyses Nitrates ESO API Hub'eau Qualité des nappes d'eau souterraine (2007-2023)",
table = "nitrate_qualite_nappes_analyses",
schema = "qualite_nappes_eau_souterraine",
db = "si_eau",
user = "admin")
```
```{r development-inflate, eval=FALSE}
# Keep eval=FALSE to avoid infinite loop in case you hit the knit button
# Execute in the console directly
fusen::inflate(flat_file = "dev/flat_import_hubeau_eso_data.Rmd", vignette_name = "Import des données Hub'eau ESO")
```
name: Import des données Hub'eau ESO
description: >
Import des données Hub'eau ESO
create_dir: FALSE
---
title: "Import des données Hub'eau ESU"
output: html_document
editor_options:
chunk_output_type: console
---
```{r development, include=FALSE}
library(testthat)
library(hubeau)
library(datalibaba)
library(RPostgreSQL)
library(sf)
library(collectr)
library(dplyr)
```
```{r development-1}
# Load already included functions
pkgload::load_all(export_all = FALSE)
```
# Présentation
> Cette page contient la logique métier concernant l'import des données de
l'[API Hub'eau "Qualité des cours d'eau"](https://hubeau.eaufrance.fr/page/api-qualite-cours-deau) dans le cadre du projet Nitrates
# Connexion à la base de données PostgreSQL
```{r connect_to_db, eval=FALSE}
# Se connecter à la base de données PostgreSQL si_eau
connexion <- datalibaba::connect_to_db(db = "si_eau", user = "admin")
```
```{r list_schemas, eval=FALSE}
# Lister les schémas présents dans la base
schemas_list <- data.frame(datalibaba::list_schemas(connexion))
# Renommer la variable unique en "nom_schema"
schemas_list <- schemas_list |>
rename(nom_schema = unique(names(.)))
# Trier le dataframe par la variable nom_schema
schemas_list <- schemas_list |>
arrange(nom_schema)
```
```{r list_tables, eval=FALSE}
# Lister les tables présentes dans le schéma spécifié
tables_list <- data.frame(datalibaba::list_tables(
con = connexion,
db = "si_eau",
schema = "qualite_cours_d_eau"))
# Renommer la variable unique en "nom_table"
tables_list <- tables_list |>
rename(nom_table = names(tables_list)[1])
# Trier le dataframe par la variable nom_table
tables_list <- tables_list |>
arrange(nom_table)
```
# Import des données Hub'eau ESU dans un dataframe par millésime
On utilise la fonction `get_qualite_rivieres_analyse()` du package [{hubeau}](https://github.com/inrae/hubeau)
```{r create-nitrate_analyse_esu_2020, eval=FALSE}
nitrate_analyse_esu_2020 <- hubeau::get_qualite_rivieres_analyse(code_parametre = "1340",
code_region = "52",
date_debut_prelevement = "2020-01-01",
date_fin_prelevement = "2020-12-31",
size = "5000")
```
```{r create-nitrate_analyse_esu_2021, eval=FALSE}
nitrate_analyse_esu_2021 <- hubeau::get_qualite_rivieres_analyse(code_parametre = "1340",
code_region = "52",
date_debut_prelevement = "2021-01-01",
date_fin_prelevement = "2021-12-31",
size = "5000")
```
```{r create-nitrate_analyse_esu_2022, eval=FALSE}
nitrate_analyse_esu_2022 <- hubeau::get_qualite_rivieres_analyse(code_parametre = "1340",
code_region = "52",
date_debut_prelevement = "2022-01-01",
date_fin_prelevement = "2022-12-31",
size = "5000")
```
```{r create-nitrate_analyse_esu_2023, eval=FALSE}
nitrate_analyse_esu_2023 <- hubeau::get_qualite_rivieres_analyse(code_parametre = "1340",
code_region = "52",
date_debut_prelevement = "2023-01-01",
date_fin_prelevement = "2023-12-31",
size = "5000")
```
# Correction de l'encodage si nécessaire pour certaines variables
```{r change-encoding, eval=FALSE}
nitrate_analyse_esu_2023 <- nitrate_analyse_esu_2023 |>
dplyr::mutate(libelle_station = iconv(libelle_station, from = "ISO-8859-1", to = "UTF-8"))
```
# Création d'une table pour le nouveau millésime
```{r create-nitrate_data_ars, eval=FALSE}
# Charger les données dans une nouvelle table en base
datalibaba::poster_data(data = nitrate_analyse_esu_2023,
table = "nitrate_qualite_rivieres_analyse_pc_2023",
schema = "qualite_cours_d_eau",
db = "si_eau",
overwrite = TRUE,
user = "admin")
# Ajouter un commentaire sur la table
datalibaba::commenter_table(comment = "Analyses \"Nitrates\" ESU issues de l''API Hub''eau qualite_rivieres : données brutes",
table = "nitrate_qualite_rivieres_analyse_pc_2023",
schema = "qualite_cours_d_eau",
db = "si_eau",
user = "admin")
```
# Modification du type des champs si besoin
```{r modify_column_type, eval=FALSE}
# Modifier le type de colonne pour les champs de date
collectr::modify_column_type(database = "si_eau",
schema = "qualite_cours_d_eau",
table = "nitrate_qualite_rivieres_analyse_pc_2023",
column_name = "date_prelevement",
column_type = "date",
role = "admin")
collectr::modify_column_type(database = "si_eau",
schema = "qualite_cours_d_eau",
table = "nitrate_qualite_rivieres_analyse_pc_2023",
column_name = "date_analyse",
column_type = "date",
role = "admin")
```
# Archivage de la version précédente de la table
```{r archive_table, eval=FALSE}
# Archiver la version actuelle de la table avec tous les millésimes
collectr::archive_table(database = "si_eau",
schema = "qualite_cours_d_eau",
new_schema = "zz_archives",
table = "nitrate_qualite_rivieres_analyse_pc",
role = "admin")
```
# Insertion des données du nouveau millésime en base dans la table globale
```{r import_and_merge_tables, eval=FALSE}
# Insérer les données de la table du dernier millésime vers la table complète
collectr::import_and_merge_tables(database = "si_eau",
source_table = "nitrate_qualite_rivieres_analyse_pc_2023",
source_schema = "qualite_cours_d_eau",
target_table = "nitrate_qualite_rivieres_analyse_pc",
target_schema = "qualite_cours_d_eau",
role = "admin")
# Actualiser le commentaire sur la table
datalibaba::commenter_table(comment = "Analyses Nitrates ESU API Hub'eau Qualité des cours d'eau (2007-2023)",
table = "nitrate_qualite_rivieres_analyse_pc",
schema = "qualite_cours_d_eau",
db = "si_eau",
user = "admin")
```
```{r development-inflate, eval=FALSE}
# Keep eval=FALSE to avoid infinite loop in case you hit the knit button
# Execute in the console directly
fusen::inflate(flat_file = "dev/flat_import_hubeau_esu_data.Rmd", vignette_name = "Import des données Hub'eau ESU")
```
name: Import des données Hub'eau ESU
description: >
Import des données Hub'eau ESU
create_dir: FALSE
---
title: "Insertion des analyses ARS"
output: html_document
editor_options:
chunk_output_type: console
---
```{r development, include=FALSE}
library(testthat)
library(datalibaba)
library(dplyr)
library(stringr)
library(glue)
library(DBI)
library(RPostgres)
```
```{r development-load}
# Load already included functions if relevant
pkgload::load_all(export_all = FALSE)
```
# Consolidation et insertion des données de l'ARS dans la table des analyses
## Chargement des données ARS brutes
La table des données brutes Nitrates de l'ARS est chargée :
```{r load-nitrate_data_analyse_ars, eval=FALSE}
# Charger la table nitrates.nitrate_data_analyse_ars
nitrate_data_analyse_ars <- datalibaba::importer_data(
table = "nitrate_data_analyse_ars",
schema = "nitrates",
db = "si_eau",
user = "admin"
)
```
## Consolidation des données ARS
On supprime les enregistrements correspondants à des totaux :
```{r filter-param_nom_ars, eval=FALSE}
# Supprimer les lignes ne correspondant pas à une analyse
nitrate_analyse_ars <- nitrate_data_analyse_ars |>
dplyr::filter(!stringr::str_starts(param_nom, "Total"))
```
On remplace les chaînes de caractère par NA dans la variable `ana_param_alpha_resultat` :
```{r replace-strings-with-na, eval=FALSE}
# Remplacer chaînes de caractère dans la colonne ana_param_alpha_resultat
nitrate_analyse_ars <- nitrate_analyse_ars |>
dplyr::mutate(
ana_param_alpha_resultat = dplyr::case_when(
ana_param_alpha_resultat %in% c("TRACES", "PRESENCE", "SEUIL", "ILLISIBL", "N.M.", "O", "?", ",", " ") ~ NA_character_,
TRUE ~ ana_param_alpha_resultat
)
)
```
On remplace des valeurs dans ana_param_alpha_resultat et param_code:
```{r replace-dot_ana_param_alpha_resultat, eval=FALSE}
# Remplacer les valeurs dans les colonnes ana_param_alpha_resultat et param_code
nitrate_analyse_ars <- nitrate_analyse_ars |>
dplyr::mutate(
ana_param_alpha_resultat = stringr::str_replace(ana_param_alpha_resultat, "\\,", "."),
param_code = stringr::str_replace(param_code, "NO3", "1340")
)
```
On affecte le code_remarque et la valeur des variables resultat_analyse et limite_quantification :
```{r mutate-from_ana_param_alpha_resultat, eval=FALSE}
# Ajouter les colonnes code_remarque, resultat_analyse et limite_quantification
nitrate_analyse_ars <- nitrate_analyse_ars |>
mutate(
# Ajout de la colonne code_remarque selon la condition spécifiée
code_remarque = dplyr::case_when(
stringr::str_starts(ana_param_alpha_resultat, "<") ~ 10,
TRUE ~ 1
),
# Renommage conditionnel des colonnes
resultat_analyse = dplyr::case_when(
stringr::str_starts(ana_param_alpha_resultat, "<") ~ as.character(ana_param_valeur_traduite),
TRUE ~ ana_param_alpha_resultat
),
limite_quantification = dplyr::case_when(
stringr::str_starts(ana_param_alpha_resultat, "<") ~ ana_param_alpha_resultat,
TRUE ~ NA_character_ # Utilisation de NA pour les valeurs non pertinentes
)
)
```
On sélectionne les champs utiles à la table des analyses :
```{r select-variables-ars, eval=FALSE}
# Sélectionner les variables
nitrate_analyse_ars <- nitrate_analyse_ars |>
dplyr::select(code_station = ins_code_national,
code_intervenant = geo_dept_ddass_gest_code,
date_prelevement = plv_date,
nom_parametre = param_nom,
date_analyse = anl_date_fin_analyse,
resultat_analyse,
code_parametre = param_code,
code_remarque,
limite_quantification)
```
On supprime les caractères < et > dans les variables resultat_analyse et limite_quantification :
```{r replace-inferior_superior, eval=FALSE}
# Remplacer les valeurs dans les colonnes resultat_analyse et limite_quantification
nitrate_analyse_ars <- nitrate_analyse_ars |>
dplyr::mutate(resultat_analyse =
stringr::str_replace(resultat_analyse, ">", ""),
limite_quantification =
stringr::str_replace(limite_quantification, "<", ""))
```
On modifie le type des variables resultat_analyse et limite_quantification :
```{r change-fieldtypes, eval=FALSE}
# Remplacer les valeurs dans les colonnes resultat_analyse et limite_quantification
nitrate_analyse_ars <- nitrate_analyse_ars |>
dplyr::mutate(resultat_analyse = as.numeric(resultat_analyse),
limite_quantification = as.numeric(limite_quantification),
code_parametre = as.integer(code_parametre))
```
## Jointure avec la table des prélèvements créée auparavant
La table des prélèvements est chargée :
```{r load-nitrate_prelevement, eval=FALSE}
# Charger la table nitrates.nitrate_prelevement_v0_15
nitrate_prelevement <- datalibaba::importer_data(
table = "nitrate_prelevement_v0_15",
schema = "nitrates",
db = "si_eau",
user = "admin"
)
```
On dédoublonne les lignes en utilisant les champs `code_station` et `date_prelevement`
afin de ne conserver qu'un prélèvement par station et date donnée :
```{r select-distinct-rows-ars, eval=FALSE}
# Dédoublonner les lignes sur les colonnes code_station et date_prelevement
nitrate_analyse_ars <- nitrate_analyse_ars |>
dplyr::distinct(code_station, date_prelevement, .keep_all = TRUE)
```
On joint le dataframe des prélèvements pour récupérer la variable code_prelevement :
```{r join-prelvement_ars, eval=FALSE}
# Joindre les dataframes nitrate_analyse_ars et nitrate_prelevement
nitrate_analyse_ars <- nitrate_analyse_ars |>
left_join(nitrate_prelevement |>
select(code_station, date_prelevement, code_prelevement),
by = c("code_station" = "code_station", "date_prelevement" = "date_prelevement"))
```
```{r function-add_code_analyse, eval=FALSE}
#' Ajouter une variable code_analyse au dataframe
#'
#' @description Cette fonction ajoute une nouvelle variable `code_analyse`
#' au dataframe en utilisant une séquence PostgreSQL dynamique. La séquence est
#' construite en fonction du paramètre `version` fourni.
#'
#' @param dataframe Un dataframe contenant les données sur lesquelles ajouter
#' la variable `code_analyse`.
#' @param version Une chaîne de caractères représentant la version de la
#' séquence à utiliser.
#'
#' @return Un dataframe avec une nouvelle colonne `code_analyse` contenant
#' les valeurs de la séquence PostgreSQL.
#'
#' @importFrom DBI dbGetQuery dbDisconnect
#' @importFrom dplyr mutate
#' @importFrom glue glue
#' @importFrom datalibaba connect_to_db
#' @export
add_code_analyse <- function(dataframe, version) {
# Établir une connexion à la base de données PostgreSQL
connexion <- datalibaba::connect_to_db(db = "si_eau", user = "admin")
# Construire le nom de la séquence
sequence_name <- glue::glue("nitrates.nitrate_analyse_{version}_code_analyse_seq")
# Initialiser une liste pour stocker les valeurs de la séquence
code_analyses <- c()
# Pour chaque ligne du dataframe, obtenir une valeur de la séquence
for (i in 1:nrow(dataframe)) {
query <- glue::glue("SELECT nextval(\'{sequence_name}\') AS code_analyse")
result <- DBI::dbGetQuery(connexion, query)
code_analyses <- c(code_analyses, result$code_analyse)
}
# Ajouter la nouvelle variable au dataframe
dataframe <- dataframe |>
dplyr::mutate(code_analyse = code_analyses)
# Fermer la connexion à la base de données
DBI::dbDisconnect(connexion)
return(dataframe)
}
```
On ajoute un identifiant unique s'appuyant sur une séquence stockée en base :
```{r add_code_analyse_ars, eval=FALSE}
# Utiliser la fonction add_code_analyse_ars avec la version souhaitée
nitrate_analyse_ars <- add_code_analyse(
nitrate_analyse_ars, "v0_15")
# Afficher le dataframe pour vérifier les modifications
print(nitrate_analyse_ars)
```
## Préparation pour l'insertion en base
On corrige l'ordre des champs les champs utiles à la table des analyses :
```{r select-variables-ars-final, eval=FALSE}
# Sélectionner les variables dans l'ordre des champs de la table à alimenter
nitrate_analyse_ars <- nitrate_analyse_ars |>
dplyr::select(code_analyse,
code_intervenant,
code_prelevement,
code_parametre,
code_station,
date_analyse,
resultat_analyse,
code_remarque,
limite_quantification)
```
On charge les données consolidées dans un table dédiée :
```{r insert-into_nitrate_prelevement_v0_15, eval=FALSE}
# Charger les données dans une nouvelle table en base
datalibaba::poster_data(data = nitrate_analyse_ars,
table = "nitrate_analyse_ars_v0_15",
schema = "nitrates",
db = "si_eau",
overwrite = TRUE,
pk = "code_analyse",
user = "admin")
```
## Insertion des analyses ARS en base dans la table globale
On insère enfin les enregistrements de cette table dans la table globale :
```{r import_and_merge_tables_ars, eval=FALSE}
# Insérer les données de la table du dernier millésime vers la table complète
collectr::import_and_merge_tables(database = "si_eau",
source_table = "nitrate_analyse_ars_v0_15",
source_schema = "nitrates",
target_table = "nitrate_analyse_v0_15",
target_schema = "nitrates",
role = "admin")
```
```{r development-inflate, eval=FALSE}
# Run but keep eval=FALSE to avoid infinite loop
# Execute in the console directly
fusen::inflate(flat_file = "dev/flat_insert_ars_into_analyse.Rmd", vignette_name = "Insertion des analyses ARS")
```
name: Insertion des analyses ARS
description: >
Insertion des analyses ARS
create_dir: FALSE
---
title: "Insertion des analyses Hubeau ESO"
output: html_document
editor_options:
chunk_output_type: console
---
```{r development, include=FALSE}
library(testthat)
library(datalibaba)
library(dplyr)
library(stringr)
library(glue)
library(DBI)
library(RPostgres)
```
```{r development-load}
# Load already included functions if relevant
pkgload::load_all(export_all = FALSE)
```
# Consolidation et insertion des analyses Hub'eau ESO dans la table des analyses
## Chargement des analyses Hub'eau ESO
La table des données brutes Nitrates Hub'eau ESO est chargée :
```{r load-nitrate_qualite_nappes_analyses, eval=FALSE}
# Charger la table qualite_nappes_eau_souterraine.nitrate_qualite_nappes_analyses
nitrate_qualite_nappes_analyses <- datalibaba::importer_data(
table = "nitrate_qualite_nappes_analyses",
schema = "qualite_nappes_eau_souterraine",
db = "si_eau",
user = "admin"
)
```
## Filtre par code_producteur pour exclure les données ARS
On sélectionne les code_producteur correspondants aux enregistrements hors
données ARS de la région :
```{r select-code_producteur_hubeau_eso, eval=FALSE}
# Filtrer pour exclure les données ARS
nitrate_qualite_nappes_analyses <- nitrate_qualite_nappes_analyses |>
dplyr::filter(!code_producteur %in% c('44','49','53','72','85'))
```
## Consolidation des données Hub'eau ESO
On remplace des valeurs dans limite_detection et limite_quantification :
```{r replace-dot_limite_detection, eval=FALSE}
# Remplacer les valeurs dans les colonnes limite_detection et limite_quantification
nitrate_qualite_nappes_analyses <- nitrate_qualite_nappes_analyses |>
dplyr::mutate(
resultat = stringr::str_replace(resultat, "\\,", "."),
limite_detection = stringr::str_replace(limite_detection, "\\,", "."),
limite_quantification = stringr::str_replace(limite_quantification, "\\,", ".")
)
```
On sélectionne les champs utiles à la table des analyses :
```{r select-variables-hubeau_eso, eval=FALSE}
# Sélectionner les variables
nitrate_qualite_nappes_analyses <- nitrate_qualite_nappes_analyses |>
dplyr::select(code_station = bss_id,
code_intervenant = code_lieu_analyse,
date_prelevement = date_debut_prelevement,
date_analyse = date_debut_prelevement,
resultat_analyse = resultat,
code_parametre = code_param,
code_fraction_analysee = code_fraction,
code_remarque = code_remarque_analyse,
limite_detection,
limite_quantification)
```
On modifie le type des variables numériques :
```{r change-fieldtypes, eval=FALSE}
# Remplacer les valeurs dans les colonnes resultat_analyse et limite_quantification
nitrate_qualite_nappes_analyses <- nitrate_qualite_nappes_analyses |>
dplyr::mutate(resultat_analyse = as.numeric(resultat_analyse),
limite_detection = as.numeric(limite_detection),
limite_quantification = as.numeric(limite_quantification),
code_parametre = as.integer(code_parametre),
code_fraction_analysee = as.integer(code_fraction_analysee),
code_remarque = as.integer(code_remarque)
)
```
# Jointure avec la table des prélèvements créée auparavant
La table des prélèvements est chargée :
```{r load-nitrate_prelevement, eval=FALSE}
# Charger la table nitrates.nitrate_prelevement_v0_15
nitrate_prelevement <- datalibaba::importer_data(
table = "nitrate_prelevement_v0_15",
schema = "nitrates",
db = "si_eau",
user = "admin"
)
```
On dédoublonne les lignes en utilisant les champs `code_station` et `date_prelevement`
afin de ne conserver qu'un prélèvement par station et date donnée :
```{r select-distinct-rows_hubeau_eso, eval=FALSE}
# Dédoublonner les lignes sur les colonnes code_station et date_prelevement
nitrate_qualite_nappes_analyses <- nitrate_qualite_nappes_analyses |>
dplyr::distinct(code_station, date_prelevement, .keep_all = TRUE)
```
On joint le dataframe des prélèvements pour récupérer la variable code_prelevement :
```{r join-prelevement_hubeau_eso, eval=FALSE}
# Joindre les dataframes nitrate_qualite_nappes_analyses et nitrate_prelevement
nitrate_qualite_nappes_analyses <- nitrate_qualite_nappes_analyses |>
left_join(nitrate_prelevement |>
select(code_station, date_prelevement, code_prelevement),
by = c("code_station" = "code_station", "date_prelevement" = "date_prelevement"))
```
On dédoublonne les lignes en utilisant les champs `code_prelevement`,
`code_parametre` et `resultat_analyse` afin de ne conserver qu'une analyse :
```{r select-distinct-rows_hubeau_eso_2, eval=FALSE}
# Dédoublonner les lignes sur les colonnes code_station et date_prelevement
nitrate_qualite_nappes_analyses <- nitrate_qualite_nappes_analyses |>
dplyr::distinct(code_prelevement, code_parametre, resultat_analyse, .keep_all = TRUE)
```
On ajoute un identifiant unique s'appuyant sur une séquence stockée en base :
```{r add_code_analyse_hubeau_eso, eval=FALSE}
# Utiliser la fonction add_code_analyse_ars avec la version souhaitée
nitrate_qualite_nappes_analyses <- add_code_analyse(
nitrate_qualite_nappes_analyses, "v0_15")
# Afficher le dataframe pour vérifier les modifications
print(nitrate_qualite_nappes_analyses)
```
# Chargement en base
On corrige l'ordre des champs les champs utiles à la table des analyses :
```{r select-variables-hubeau_eso_final, eval=FALSE}
# Sélectionner les variables dans l'ordre des champs de la table à alimenter
nitrate_qualite_nappes_analyses <- nitrate_qualite_nappes_analyses |>
dplyr::select(code_analyse,
code_intervenant,
code_prelevement,
code_parametre,
code_fraction_analysee,
date_analyse,
resultat_analyse,
code_remarque,
limite_detection,
limite_quantification)
```
On charge les données consolidées dans un table dédiée :
```{r insert-into_nitrate_prelevement_v0_15, eval=FALSE}
# Charger les données dans une nouvelle table en base
datalibaba::poster_data(data = nitrate_qualite_nappes_analyses,
table = "nitrate_analyse_hubeau_eso_v0_15",
schema = "nitrates",
db = "si_eau",
overwrite = TRUE,
pk = "code_analyse",
user = "admin")
```
# Insertion des données Hub'eau ESO en base dans la table globale
On insère enfin les enregistrements de cette table dans la table globale :
```{r import_and_merge_tables_hubeau_eso, eval=FALSE}
# Insérer les données de la table du dernier millésime vers la table complète
collectr::import_and_merge_tables(database = "si_eau",
source_table = "nitrate_analyse_hubeau_eso_v0_15",
source_schema = "nitrates",
target_table = "nitrate_analyse_v0_15",
target_schema = "nitrates",
role = "admin")
```
```{r development-inflate, eval=FALSE}
# Run but keep eval=FALSE to avoid infinite loop
# Execute in the console directly
fusen::inflate(flat_file = "dev/flat_insert_hubeau_eso_into_analyse.Rmd", vignette_name = "Insertion des analyses Hubeau ESO")
```
name: Insertion des analyses Hubeau ESO
description: >
Insertion des analyses Hubeau ESO
create_dir: FALSE
---
title: "Insertion des analyses Hubeau ESU"
output: html_document
editor_options:
chunk_output_type: console
---
```{r development, include=FALSE}
library(testthat)
library(datalibaba)
library(dplyr)
library(stringr)
library(glue)
library(DBI)
library(RPostgres)
```
```{r development-load}
# Load already included functions if relevant
pkgload::load_all(export_all = FALSE)
```
# Consolidation et insertion des analyses Hub'eau ESU dans la table des analyses
## Chargement des analyses Hub'eau ESU
La table des données brutes Nitrates Hub'eau ESU est chargée :
```{r load-nitrate_qualite_rivieres_analyse_pc, eval=FALSE}
# Charger la table qualite_cours_d_eau.nitrate_qualite_rivieres_analyse_pc
nitrate_qualite_rivieres_analyses <- datalibaba::importer_data(
table = "nitrate_qualite_rivieres_analyse_pc",
schema = "qualite_cours_d_eau",
db = "si_eau",
user = "admin"
)
```
## Consolidation des analyses Hub'eau ESU
On remplace des valeurs dans limite_detection et limite_quantification :
```{r replace-dot_limite_detection, eval=FALSE}
# Remplacer les valeurs dans les colonnes limite_detection et limite_quantification
nitrate_qualite_rivieres_analyses <- nitrate_qualite_rivieres_analyses |>
dplyr::mutate(
resultat = stringr::str_replace(resultat, "\\,", "."),
limite_detection = stringr::str_replace(limite_detection, "\\,", "."),
limite_quantification = stringr::str_replace(limite_quantification, "\\,", ".")
)
```
On sélectionne les champs utiles à la table des analyses :
```{r select-variables-hubeau_esu, eval=FALSE}
# Sélectionner les variables
nitrate_qualite_rivieres_analyses <- nitrate_qualite_rivieres_analyses |>
dplyr::select(code_station,
code_intervenant = code_laboratoire,
date_prelevement,
date_analyse,
resultat_analyse = resultat,
code_parametre,
code_fraction_analysee = code_fraction,
code_remarque,
limite_detection,
limite_quantification)
```
On modifie le type des variables resultat_analyse et limite_quantification :
```{r change-fieldtypes, eval=FALSE}
# Remplacer les valeurs dans les colonnes resultat_analyse et limite_quantification
nitrate_qualite_rivieres_analyses <- nitrate_qualite_rivieres_analyses |>
dplyr::mutate(resultat_analyse = as.numeric(resultat_analyse),
limite_detection = as.numeric(limite_detection),
limite_quantification = as.numeric(limite_quantification),
code_parametre = as.integer(code_parametre),
code_fraction_analysee = as.integer(code_fraction_analysee),
code_remarque = as.integer(code_remarque)
)
```
# Jointure avec la table des prélèvements créée auparavant
La table des prélèvements est chargée :
```{r load-nitrate_prelevement, eval=FALSE}
# Charger la table nitrates.nitrate_prelevement_v0_15
nitrate_prelevement <- datalibaba::importer_data(
table = "nitrate_prelevement_v0_15",
schema = "nitrates",
db = "si_eau",
user = "admin"
)
```
On dédoublonne les lignes en utilisant les champs `code_station` et `date_prelevement`
afin de ne conserver qu'un prélèvement par station et date donnée :
```{r select-distinct-rows_hubeau_esu, eval=FALSE}
# Dédoublonner les lignes sur les colonnes code_station et date_prelevement
nitrate_qualite_rivieres_analyses <- nitrate_qualite_rivieres_analyses |>
dplyr::distinct(code_station, date_prelevement, .keep_all = TRUE)
```
On joint le dataframe des prélèvements pour récupérer la variable code_prelevement :
```{r join-prelevement_hubeau_esu, eval=FALSE}
# Joindre les dataframes nitrate_qualite_rivieres_analyses et nitrate_prelevement
nitrate_qualite_rivieres_analyses <- nitrate_qualite_rivieres_analyses |>
left_join(nitrate_prelevement |>
select(code_station, date_prelevement, code_prelevement),
by = c("code_station" = "code_station", "date_prelevement" = "date_prelevement"))
```
On dédoublonne les lignes en utilisant les champs `code_prelevement`,
`code_parametre` et `resultat_analyse` afin de ne conserver qu'une analyse :
```{r select-distinct-rows_hubeau_esu_2, eval=FALSE}
# Dédoublonner les lignes sur les colonnes code_station et date_prelevement
nitrate_qualite_rivieres_analyses <- nitrate_qualite_rivieres_analyses |>
dplyr::distinct(code_prelevement, code_parametre, resultat_analyse, .keep_all = TRUE)
```
On ajoute un identifiant unique s'appuyant sur une séquence stockée en base :
```{r add_code_analyse_hubeau_esu, eval=FALSE}
# Utiliser la fonction add_code_analyse_ars avec la version souhaitée
nitrate_qualite_rivieres_analyses <- add_code_analyse(
nitrate_qualite_rivieres_analyses, "v0_15")
# Afficher le dataframe pour vérifier les modifications
print(nitrate_qualite_rivieres_analyses)
```
# Chargement en base
On corrige l'ordre des champs les champs utiles à la table des analyses :
```{r select-variables-hubeau_esu_final, eval=FALSE}
# Sélectionner les variables dans l'ordre des champs de la table à alimenter
nitrate_qualite_rivieres_analyses <- nitrate_qualite_rivieres_analyses |>
dplyr::select(code_analyse,
code_intervenant,
code_prelevement,
code_parametre,
code_fraction_analysee,
date_analyse,
resultat_analyse,
code_remarque,
limite_detection,
limite_quantification)
```
On charge les données consolidées dans une table dédiée :
```{r insert-into_nitrate_analyse_hubeau_esu_v0_15, eval=FALSE}
# Charger les données dans une nouvelle table en base
datalibaba::poster_data(data = nitrate_qualite_rivieres_analyses,
table = "nitrate_analyse_hubeau_esu_v0_15",
schema = "nitrates",
db = "si_eau",
overwrite = TRUE,
pk = "code_analyse",
user = "admin")
```
# Insertion des analyses Hub'eau ESU en base dans la table globale
On insère enfin les enregistrements de cette table dans la table globale :
```{r import_and_merge_tables_hubeau_esu, eval=FALSE}
# Insérer les données de la table du dernier millésime vers la table complète
collectr::import_and_merge_tables(database = "si_eau",
source_table = "nitrate_analyse_hubeau_esu_v0_15",
source_schema = "nitrates",
target_table = "nitrate_analyse_v0_15",
target_schema = "nitrates",
role = "admin")
```
```{r development-inflate, eval=FALSE}
# Run but keep eval=FALSE to avoid infinite loop
# Execute in the console directly
fusen::inflate(flat_file = "dev/flat_insert_hubeau_esu_into_analyse.Rmd", vignette_name = "Insertion des analyses Hubeau ESU")
```
name: Insertion des analyses Hubeau ESU
description: >
Insertion des analyses Hubeau ESU
create_dir: FALSE
---
title: "Insertion des pr\u00e9l\u00e8vements ARS"
output: html_document
editor_options:
chunk_output_type: console
---
```{r development, include=FALSE}
library(testthat)
library(datalibaba)
library(dplyr)
library(stringr)
library(glue)
library(DBI)
library(RPostgres)
```
```{r development-load}
# Load already included functions if relevant
pkgload::load_all(export_all = FALSE)
```
# Consolidation et insertion des données de l'ARS dans la table des prélèvements
## Chargement des données ARS brutes
La table des données brutes Nitrates de l'ARS est chargée :
```{r load-nitrate_data_analyse_ars, eval=FALSE}
nitrate_data_analyse_ars <- datalibaba::importer_data(
table = "nitrate_data_analyse_ars",
schema = "nitrates",
db = "si_eau",
user = "admin"
)
```
## Consolidation des données ARS
On ajoute les variables `source` et `code_support` :
```{r add-source_code_support_ars, eval=FALSE}
# Ajouter les variables source et code_support
nitrate_data_analyse_ars <- nitrate_data_analyse_ars |>
dplyr::mutate(
source = "ARS",
code_support = 3
)
```
On remplace "h" par ":" dans la variable `plv_heure` :
```{r replace-in_plv_heure, eval=FALSE}
# Remplacer "h" par ":" dans la colonne plv_heure
nitrate_data_analyse_ars <- nitrate_data_analyse_ars |>
dplyr::mutate(plv_heure = stringr::str_replace_all(plv_heure, "h", ":"))
```
On sélectionne les champs utiles à la table des prélèvements :
```{r select-variables-ars, eval=FALSE}
# Sélectionner les variables
nitrate_data_analyse_ars <- nitrate_data_analyse_ars |>
dplyr::select(code_intervenant = geo_dept_ddass_gest_code,
source,
code_station = ins_code_national,
date_prelevement = plv_date,
heure_prelevement = plv_heure,
code_support,
id_usage = usage,
id_prelevement_motif = plv_motif)
```
On dédoublonne les lignes en utilisant les champs `code_station` et `date_prelevement`
afin de ne conserver qu'un prélèvement par station et date donnée :
```{r select-distinct-rows-ars, eval=FALSE}
# Dédoublonner les lignes sur les colonnes code_station et date_prelevement
nitrate_data_analyse_ars <- nitrate_data_analyse_ars |>
dplyr::distinct(code_station, date_prelevement, .keep_all = TRUE)
```
```{r function-add_code_prelevement, eval=FALSE}
#' Ajouter une variable code_prelevement au dataframe
#'
#' @description Cette fonction ajoute une nouvelle variable `code_prelevement`
#' au dataframe en utilisant une séquence PostgreSQL dynamique. La séquence est
#' construite en fonction du paramètre `version` fourni.
#'
#' @param dataframe Un dataframe contenant les données sur lesquelles ajouter
#' la variable `code_prelevement`.
#' @param version Une chaîne de caractères représentant la version de la
#' séquence à utiliser.
#'
#' @return Un dataframe avec une nouvelle colonne `code_prelevement` contenant
#' les valeurs de la séquence PostgreSQL.
#'
#' @importFrom DBI dbGetQuery dbDisconnect
#' @importFrom dplyr mutate
#' @importFrom glue glue
#' @importFrom datalibaba connect_to_db
#' @export
add_code_prelevement <- function(dataframe, version) {
# Établir une connexion à la base de données PostgreSQL
connexion <- datalibaba::connect_to_db(db = "si_eau", user = "admin")
# Construire le nom de la séquence
sequence_name <- glue::glue("nitrates.nitrate_prelevement_{version}_code_prelevement_seq")
# Initialiser une liste pour stocker les valeurs de la séquence
code_prelevements <- c()
# Pour chaque ligne du dataframe, obtenir une valeur de la séquence
for (i in 1:nrow(dataframe)) {
query <- glue::glue("SELECT nextval(\'{sequence_name}\') AS code_prelevement")
result <- DBI::dbGetQuery(connexion, query)
code_prelevements <- c(code_prelevements, result$code_prelevement)
}
# Ajouter la nouvelle variable au dataframe
dataframe <- dataframe |>
dplyr::mutate(code_prelevement = code_prelevements)
# Fermer la connexion à la base de données
DBI::dbDisconnect(connexion)
return(dataframe)
}
```
On ajoute un identifiant unique s'appuyant sur une séquence stockée en base :
```{r add_code_prelevement_ars, eval=FALSE}
# Utiliser la fonction add_code_prelevement_ars avec la version souhaitée
nitrate_data_analyse_ars <- add_code_prelevement(
nitrate_data_analyse_ars, "v0_15")
# Afficher le dataframe pour vérifier les modifications
print(nitrate_data_analyse_ars)
```
On charge les données consolidées dans un table dédiée :
```{r insert-into_nitrate_prelevement_v0_15, eval=FALSE}
# Charger les données dans une nouvelle table en base
datalibaba::poster_data(data = nitrate_data_analyse_ars,
table = "nitrate_prelevement_ars_v0_15",
schema = "nitrates",
db = "si_eau",
overwrite = TRUE,
pk = "code_prelevement",
user = "admin")
```
# Insertion des données ARS du nouveau millésime en base dans la table globale
On insère enfin les enregistrements de cette table dans la table globale :
```{r import_and_merge_tables_ars, eval=FALSE}
# Insérer les données de la table du dernier millésime vers la table complète
collectr::import_and_merge_tables(database = "si_eau",
source_table = "nitrate_prelevement_ars_v0_15",
source_schema = "nitrates",
target_table = "nitrate_prelevement_v0_15",
target_schema = "nitrates",
role = "admin")
```
```{r development-inflate, eval=FALSE}
# Run but keep eval=FALSE to avoid infinite loop
# Execute in the console directly
fusen::inflate(flat_file = "dev/flat_insert_ars_into_prelevement.Rmd", vignette_name = "Insertion des pr\u00e9l\u00e8vements ARS")
```
name: Insertion des prélèvements ARS
description: >
Insertion des prélèvements ARS
create_dir: FALSE
---
title: "Insertion des pr\u00e9l\u00e8vements Hubeau ESO"
output: html_document
editor_options:
chunk_output_type: console
---
```{r development, include=FALSE}
library(testthat)
library(datalibaba)
library(dplyr)
library(stringr)
library(glue)
library(DBI)
library(RPostgres)
```
```{r development-load}
# Load already included functions if relevant
pkgload::load_all(export_all = FALSE)
```
# Consolidation et insertion des données Hub'eau ESO dans la table des prélèvements
## Chargement des prélèvements Hub'eau ESO
La table des données brutes Nitrates Hub'eau ESO est chargée :
```{r load-nitrate_qualite_nappes_analyses, eval=FALSE}
# Charger la table qualite_nappes_eau_souterraine.nitrate_qualite_rivieres_analyse_pc
nitrate_qualite_nappes_prelevements <- datalibaba::importer_data(
table = "nitrate_qualite_nappes_analyses",
schema = "qualite_nappes_eau_souterraine",
db = "si_eau",
user = "admin"
)
```
## Filtre par code_producteur pour exclure les données ARS
On sélectionne les code_producteur correspondants aux enregistrements hors
données ARS de la région :
```{r select-code_producteur_hubeau_eso, eval=FALSE}
# Filtrer pour exclure les données ARS
nitrate_qualite_nappes_prelevements <- nitrate_qualite_nappes_prelevements |>
dplyr::filter(!code_producteur %in% c('44','49','53','72','85'))
```
## Consolidation des prélèvements Hub'eau ESO
On ajoute les variables `source` et `code_support` :
```{r add-source_code_support_hubeau_eso, eval=FALSE}
# Ajouter les variables source et code_support
nitrate_qualite_nappes_prelevements <- nitrate_qualite_nappes_prelevements |>
dplyr::mutate(
source = "ADES",
code_support = 3)
```
On sélectionne les champs utiles à la table des prélèvements :
```{r select-variables_hubeau_eso, eval=FALSE}
# Sélectionner les variables
nitrate_qualite_nappes_prelevements <- nitrate_qualite_nappes_prelevements |>
dplyr::select(source,
code_reseau = codes_reseau,
code_station = bss_id,
date_prelevement = date_debut_prelevement,
code_support)
```
On modifie le type de la variable `code_support` de character en integer :
```{r change-type_code_support, eval=FALSE}
# Convertir la variable code_support de character en integer
nitrate_qualite_nappes_prelevements <- nitrate_qualite_nappes_prelevements |>
dplyr::mutate(code_support = as.integer(code_support))
```
On dédoublonne les lignes en utilisant les champs `code_station` et
`date_prelevement` afin de ne conserver qu'un prélèvement par station et date
donnée :
```{r select-distinct-rows_hubeau_eso, eval=FALSE}
# Dédoublonner les lignes sur les colonnes code_station et date_prelevement
nitrate_qualite_nappes_prelevements <- nitrate_qualite_nappes_prelevements |>
dplyr::distinct(code_station, date_prelevement, .keep_all = TRUE)
```
On ajoute un identifiant unique s'appuyant sur une séquence stockée en base :
```{r add_code_prelevement_hubeau_eso, eval=FALSE}
# Utiliser la fonction add_code_prelevement avec la version souhaitée
nitrate_qualite_nappes_prelevements <- add_code_prelevement(
nitrate_qualite_nappes_prelevements, "v0_15")
# Afficher le dataframe pour vérifier les modifications
print(nitrate_qualite_nappes_prelevements)
```
On charge les données consolidées dans un table dédiée :
```{r insert-into_nitrate_prelevement_hubeau_eso, eval=FALSE}
# Charger les données dans une nouvelle table en base
datalibaba::poster_data(data = nitrate_qualite_nappes_prelevements,
table = "nitrate_prelevement_hubeau_eso_v0_15",
schema = "nitrates",
db = "si_eau",
overwrite = TRUE,
pk = "code_prelevement",
user = "admin")
```
# Insertion des prélèvements Hub'eau ESO en base dans la table globale
On insère enfin les enregistrements de cette table dans la table globale :
```{r import_and_merge_tables_hubeau_eso, eval=FALSE}
# Insérer les prélèvements Hub'eau ESO vers la table complète
collectr::import_and_merge_tables(database = "si_eau",
source_table = "nitrate_prelevement_hubeau_eso_v0_15",
source_schema = "nitrates",
target_table = "nitrate_prelevement_v0_15",
target_schema = "nitrates",
role = "admin")
```
```{r development-inflate, eval=FALSE}
# Run but keep eval=FALSE to avoid infinite loop
# Execute in the console directly
fusen::inflate(flat_file = "dev/flat_insert_hubeau_eso_into_prelevement.Rmd", vignette_name = "Insertion des pr\u00e9l\u00e8vements Hubeau ESO")
```
name: Insertion des prélèvements Hubeau ESO
description: >
Insertion des prélèvements Hubeau ESO
create_dir: FALSE
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment