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

Ajout des templates RMarkdown

parent c25389aa
Branches
Tags
1 merge request!13Ajout des templates RMarkdown
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