ropensci / software-review

rOpenSci Software Peer Review.
286 stars 104 forks source link

Submission: tiler #226

Closed leonawicz closed 5 years ago

leonawicz commented 6 years ago

Summary

Purpose: Create geographic and no-geographic map tile sets from R.

Package: tiler
Version: 0.2.0
Title: Create Geographic and Non-Geographic Map Tiles
Description: Creates geographic map tiles from geospatial map files or non-geographic map tiles from simple image files. This package provides a tile generator function for creating map tile sets for use with packages such as 'leaflet'. In addition to generating map tiles based on a common raster layer source, it also handles the non-geographic edge case, producing map tiles from arbitrary images. These map tiles, which have a non-geographic, simple coordinate reference system (CRS), can also be used with 'leaflet' when applying the simple CRS option. Map tiles can be created from an input file with any of the following extensions: tif, grd and nc for spatial maps and png, jpg and bmp for basic images. This package requires 'Python' and the 'gdal' library for 'Python'. 'Windows' users are recommended to install 'OSGeo4W' (<https://trac.osgeo.org/osgeo4w/>) as an easy way to obtain the required 'gdal' support for 'Python'.
Authors@R: c(person("Matthew", "Leonawicz", email = "mfleonawicz@alaska.edu", role = c("aut", "cre")),
    person("Scenarios Network for Alaska and Arctic Planning", role = c("cph", "fnd"))
    )
License: MIT + file LICENSE
Encoding: UTF-8
LazyData: true
ByteCompile: true
URL: https://github.com/leonawicz/tiler
BugReports: https://github.com/leonawicz/tiler/issues
SystemRequirements: Python (>= 2.7), python-gdal library (For Windows, gdal installed via OSGeo4W <https://trac.osgeo.org/osgeo4w/> recommended)
  clipboard
Suggests:
    testthat,
    knitr,
    rmarkdown,
    lintr,
    covr,
    jpeg,
    bmp
Imports:
    sp,
    rgdal,
    raster,
    png
VignetteBuilder: knitr
RoxygenNote: 6.0.1

geospatial, because (1) the package assists with tiling high resolution geospatial maps for practical use in online applications where displaying the source image would be too heavy a resource load and (2) even the non-geographic/"simple CRS" use case can be geospatial. For example, an image of an old, hand-drawn but historically significant map may be used as the background of a tiled map application whereas something standard like zooming in on Google Maps containing modern, current georeferenced locations would be visually incompatible and a distraction from the data shown on the map.

The typical applications would be to provide the generated tile sets to tile-based map applications such as Leaflet maps and this package brings together XYZ format, TMS format, and most especially the edge case of non-geographic format, together in a single interface.

Not that I am aware of on ROpenSci. The mapview package apparently has some overlapping or related functionality just added, so I think it is only in the dev version and not the CRAN version, but looking at the source code on GitHub it appears to take a different approach, piggybacking tile creation as part of a chained or piped process that creates a Leaflet map. I wanted a package that made tiles without trying to do something specific with them "on the fly", so there is no interleaving in my package of tile creation and map creation. There is definitely value in other approaches, and perhaps in the future (not during this review process, if it gets reviewed) I may add some functionality that helps streamline processes for users such as pushing their created tile sets to GitHub for serving after they've been generated, if that gives some sense of potential future package scope. But tiler is not aimed at combining tile creation with map making. They are decidedly treated as separate endeavors.

I favor the approach and perspective of separating map tile set creation (which can be slow/bulky/resource heavy depending on the map, and can create tens of thousands of tiles, or more) from applications involving the generated tiles that I'd prefer to keep remotely hosted. tiler is suited to users who want to create tile sets, host them online, and then once that processing and scaffolding is in place and ready to be served- separately do something with those tiles as base maps. While tiler contains a simple tile previewer function, this is the "extra feature", not the core purpose or functionality. The package is intended for tile generation rather than drawing maps.

Requirements

Confirm each of the following by checking the box. This package:

Publication options

Detail

karthik commented 6 years ago

πŸ‘‹ @leonawicz I'm just returning from vacation (and email/work deluge). I will follow up with next steps shortly and also begin looking for reviewers. Stay tuned.

leonawicz commented 6 years ago

@karthik Thank you and no rush :)

Also, please feel free to ignore the unpublished (to CRAN) projections branch of the repo. Unless you think that is something assistance could be provided for. If you do consider the projections branch, it has unresolved issues, but its documentation is kept up to date with its code development. Otherwise, the master branch is what has actually been published.

karthik commented 6 years ago

Editor checks:


Editor comments

πŸ‘‹ @leonawicz The package looks to be in really good shape and no substantial issues emerged from the checks. The only minor suggestion is to break up long lines of code to improve readability, but we can wait to see what concrete suggestions the reviewers have.

No worries on the projections branch. Reviewers typically only address the master unless you say otherwise.

── GP tiler ────────────────────────────────────────────────────────────────────

It is good practice to

  βœ– avoid long code lines, it is bad for readability. Also,
    many people prefer editor windows that are about 80 characters
    wide. Try make your lines shorter than 80 characters

    R/tile.R:75:1
    R/tile.R:79:1
    R/tile.R:83:1
    R/tile.R:96:1
    R/tile.R:97:1
    ... and 22 more lines

You can go ahead and add a rOpenSci review badge to your readme. It will autoupdate as the review progresses.

[![](https://badges.ropensci.org/226_status.svg)](https://github.com/ropensci/onboarding/issues/226)

Reviewers: reviewer 1: @jasdumas; Currently seeking reviewer 2 Due date: reviewer 1: July 17th; TBD

leonawicz commented 6 years ago

@karthik Thanks! Badge added.

I can shorten the longer lines (I think my default lintr check allows 120 instead of 80). Thanks.

Yeah, please ignore the projections branch then. It is worth taking a peak at to get a sense of future scope, but I have no date set for when I would have the issues resolved and a new version out.

karthik commented 6 years ago

Thank you @jasdumas for agreeing to review! Please note due date above and reach out if you need more time. πŸ™

jasdumas commented 5 years ago

Package Review

Please check off boxes as applicable, and elaborate in comments below. Your review is not limited to these topics, as described in the reviewer guide

Documentation

The package includes all the following forms of documentation:

Functionality

Final approval (post-review)

Estimated hours spent reviewing: 2.5 Hours

Review Comments

Manual review of GitHub Repo, vignette & installation directions

Automated tests

via opening up the Development :package: R project with packrat in a new RStudio session

Packages suggested but not available for checking: β€˜lintr’ β€˜covr’ β€˜jpeg’ β€˜bmp’ R CMD check results 0 errors | 0 warnings | 1 note

R CMD check succeeded

══ Results ════════════════════════════════════════════════════════ Duration: 9.6 s

OK: 29 Failed: 0 Warnings: 0 Skipped: 0

 ── GP tiler ───────────────────────────────────────────────────────

It is good practice to

  βœ– write unit tests for all functions, and all
    package code in general. 88% of code lines are covered
    by test cases.

    R/tile.R:79:NA
    R/tile.R:80:NA
    R/tile.R:83:NA
    R/tile.R:84:NA
    R/tile.R:87:NA
    ... and 15 more lines

  βœ– avoid long code lines, it is bad for
    readability. Also, many people prefer editor windows
    that are about 80 characters wide. Try make your lines
    shorter than 80 characters

    R/tile.R:75:1
    R/tile.R:79:1
    R/tile.R:83:1
    R/tile.R:96:1
    R/tile.R:97:1
    ... and 22 more lines

  βœ– fix this R CMD check NOTE: Namespace in
    Imports field not imported from: β€˜rgdal’ All declared
    Imports should be used.
DESCRIPTION does not contain 'Language' field. Defaulting to 'en-US'.
  WORD                 FOUND IN
Albers               tiler.Rmd:152
bmp                  tiler.Rd:16
                     description:5
CRS                  tile_viewer.Rd:14,16
                     tile.Rd:17,37,45
                     tiler.Rd:14
                     description:4
                     tiler.Rmd:19,66,82,84,98,144,148,165
EPSG                 tile.Rd:55
gdal                 description:6,7
GDAL                 tiler_options.Rd:26,28,31
georeference         tiler.Rmd:165
georeferencing       tile_viewer.Rd:18
                     tile.Rd:25
                     tiler.Rmd:179
geospatial           tile_viewer.Rd:14,16
                     tile.Rd:67
                     tiler.Rd:9
                     description:1
                     tiler.Rmd:66,84,109,144,148
geotiff              tiler.Rmd:152
grd                  tiler.Rd:16
                     description:5
https                tiler.Rd:19
                     description:7
jpg                  tiler.Rd:16
                     description:5
JS                   tile.Rd:73
                     tiler.Rmd:165
knitr                tiler.Rmd:2
nc                   tiler.Rd:16
                     description:5
osgeo                tiler.Rd:19
                     description:7
OSGeo                tiler_options.Rd:26,28
                     description:7
                     tiler.Rmd:23,23
png                  tiler.Rd:16
                     description:5
proj                 tile.Rd:39
Proj                 tile.Rd:17
QGIS                 tiler_options.Rd:28
                     tiler.Rmd:23
rasterized           tile.Rd:57
rasters              tile.Rd:62
                     tiler.Rmd:126,128
reprojected          tile.Rd:55
                     tiler.Rmd:66
reprojection         tile.Rd:27,55,56,57,58,62
                     tiler.Rmd:98,109
reprojects           tiler.Rmd:80
RGBA                 tile.Rd:58,60,61
                     tiler.Rmd:126
rmarkdown            tiler.Rmd:2
tif                  tiler.Rd:16
                     description:5
TMS                  tile.Rd:19,65,67
                     tiler.Rmd:175
trac                 tiler.Rd:19
                     description:7
unprojected          tile.Rd:61
VignetteEncoding     tiler.Rmd:2
VignetteEngine       tiler.Rmd:2
VignetteIndexEntry   tiler.Rmd:2
XYZ                  tile.Rd:19,65,68
                     tiler.Rmd:175
| index| offset|reason                                                    |
|-----:|------:|:---------------------------------------------------------|
|   530|     11|"In addition" is wordy or unneeded                        |
|   809|      7|"be used" may be passive voice                            |
|   883|     10|"be created" may be passive voice                         |
|  1067|     11|"is required" may be passive voice                        |
|  1164|      6|"simply" can weaken meaning                               |
|  1242|      5|"it is" is wordy or unneeded                              |
|  1785|      6|"is set" may be passive voice                             |
|  1815|      5|"it is" is wordy or unneeded                              |
|  1916|      4|"only" can weaken meaning                                 |
|  2121|      5|"It is" is wordy or unneeded                              |
|  2124|     14|"is recommended" may be passive voice                     |
|  2148|      6|"simply" can weaken meaning                               |
|  2372|      4|"just" can weaken meaning                                 |
|  2433|      9|"be needed" may be passive voice                          |
|  2490|     10|"additional" is wordy or unneeded                         |
|  2547|     13|"are installed" may be passive voice                      |
|  2705|      8|"There is" is unnecessary verbiage                        |
|  2820|      9|"is loaded" may be passive voice                          |
|  2939|      4|"only" can weaken meaning                                 |
|  3124|      4|"very" is a weasel word and can weaken meaning            |
|  3135|     11|"in order to" is wordy or unneeded                        |
|  3147|      8|"minimize" is wordy or unneeded                           |
|  3193|      7|"quickly" can weaken meaning                              |
|  3263|     10|"be applied" may be passive voice                         |
|  3395|      4|"very" is a weasel word and can weaken meaning            |
|  3474|     11|"a number of" is wordy or unneeded                        |
|  3615|      5|"it is" is wordy or unneeded                              |
|  3618|     14|"is recommended" may be passive voice                     |
|  3661|      4|"only" can weaken meaning                                 |
|  3848|     13|"are generated" may be passive voice                      |
|  3997|      4|"only" can weaken meaning                                 |
|  4135|     10|"subsequent" is wordy or unneeded                         |
|  4171|      8|"are used" may be passive voice                           |
|  4596|     10|"subsequent" is wordy or unneeded                         |
|  4622|      5|"it is" is wordy or unneeded                              |
|  4991|      6|"it was" is wordy or unneeded                             |
|  5168|     12|"is projected" may be passive voice                       |
|  5182|     11|"In order to" is wordy or unneeded                        |
|  5222|      7|"be used" may be passive voice                            |
|  5279|     14|"be reprojected" may be passive voice                     |
|  5325|     13|"are generated" may be passive voice                      |
|  5698|      7|"be seen" may be passive voice                            |
|  6299|      6|"likely" can weaken meaning                               |
|  6311|      9|"is wanted" may be passive voice                          |
|  6370|      5|"it is" is wordy or unneeded                              |
|  6401|     11|"was dropped" may be passive voice                        |
|  6486|     13|"are generated" may be passive voice                      |
|  7041|      6|"be set" may be passive voice                             |
|  7141|      9|"is needed" may be passive voice                          |
|  7185|      4|"just" can weaken meaning                                 |
|  7337|      6|"easily" can weaken meaning                               |
|  7344|      7|"be done" may be passive voice                            |
|  7522|     10|"are passed" may be passive voice                         |
|  7646|      7|"usually" can weaken meaning                              |
|  7654|     10|"be ignored" may be passive voice                         |
|  8187|     13|"are supported" may be passive voice                      |
|  8377|     11|"are colored" may be passive voice                        |
|  8448|      8|"prior to" is wordy or unneeded                           |
|  8523|      6|"simply" can weaken meaning                               |
|  8608|     11|"are ignored" may be passive voice                        |
|  8631|      7|"type of" is wordy or unneeded                            |
|  9159|      9|"is geared" may be passive voice                          |
|  9240|      7|"However" is wordy or unneeded                            |
|  9296|     12|"are required" may be passive voice                       |
|  9409|      7|"usually" can weaken meaning                              |
|  9609|      8|"There is" is unnecessary verbiage                        |
|  9727|      8|"are said" may be passive voice                           |
|  9813|      7|"however" is wordy or unneeded                            |
| 10051|      9|"was shown" may be passive voice                          |
| 10061|     10|"previously" can weaken meaning and is wordy or unneeded  |
| 10139|     13|"was processed" may be passive voice                      |
| 10245|      5|"It is" is wordy or unneeded                              |
| 10253|     10|"previously" can weaken meaning and is wordy or unneeded  |
| 10411|      6|"all of" is wordy or unneeded                             |
| 10428|      8|"be tiled" may be passive voice                           |
| 10711|      8|"There is" is unnecessary verbiage                        |
| 10881|      7|"be used" may be passive voice                            |
| 10965|      8|"is based" may be passive voice                           |
| 11393|     14|"is recommended" may be passive voice                     |
| 11683|      5|"It is" is wordy or unneeded                              |
| 11686|     10|"is assumed" may be passive voice                         |
| 11918|     10|"Additional" is wordy or unneeded                         |
| 12137|      4|"only" can weaken meaning                                 |
| 12400|      6|"simply" can weaken meaning                               |
| 12559|     11|"adjacent to" is wordy or unneeded                        |
| 12819|      4|"only" can weaken meaning                                 |
| 12924|      7|"Finally" can weaken meaning                              |
| 12959|     10|"additional" is wordy or unneeded                         |
| 13053|      9|"be served" may be passive voice                          |
| 13310|     11|"exclusively" can weaken meaning and is wordy or unneeded |
| 13350|      4|"just" can weaken meaning                                 |
| 13848|      8|"are used" may be passive voice                           |
| 14022|     10|"be created" may be passive voice                         |
| 14164|      6|"easily" can weaken meaning                               |
| 14171|      9|"be loaded" may be passive voice                          |
| 14340|      7|"be done" may be passive voice                            |
| 14384|      4|"just" can weaken meaning                                 |
| 14575|      7|"However" is wordy or unneeded                            |
| 14609|     10|"is created" may be passive voice                         |
| 14628|      9|"be viewed" may be passive voice                          |
| 14788|     11|"in order to" is wordy or unneeded                        |
| 15138|     15|"trial and error" is a cliche                             |
leonawicz commented 5 years ago

Thank you so much @jasdumas ! This is really helpful. I've included a Motivation section in the readme regarding statement of need now. I've also added an example screenshot of a tiled map.

gramr looks super cool! I can definitely use that in general. I'll try to take a closer look when I have some time.

Re: installation on different systems. I don't know how to do it for Mac and don't have access to any Macs. For Linux, the only systems I have access to are server environments that already have everything Python and geospatial installed that could possibly be needed (and I'm not the sys admin so I don't know those details).

I do use Linux with Travis CI but in that environment it's not truly testing for the successful creation of map tile files. E.g., tile can execute and not make any files as a result of system requirements not present and this is not an error. I do not know how to do this yet: Python-gdal on Travis and Appveyor

I'll take a closer look at some of the lines not covered by unit tests. Some lines can be difficult to test.

Thanks!

karthik commented 5 years ago

@leonawicz Quick update. Let me know once you've worked through Jasmine's suggestion. The second reviewers email got lost but I have contacted them again to complete the review. If it doesn't arrive shortly, I will act as second reviewer.

leonawicz commented 5 years ago

@karthik Thanks. I've done everything I'm able to at this time. I don't think the handful of lines without code coverage via Travis CI/Codecov are that important. Some cannot be covered like .onLoad lines (or can it?).

If ensuring a true tile-generating (i.e., file-generating) test occurs on Linux builds via Travis CI is important, I am stuck there (see link to issue above regarding installing Python and GDAL on Travis/Appveyor) and unable to resolve that myself.

karthik commented 5 years ago

Thanks @leonawicz, I'll take a look at those issues.

Also @Paula-Moraga is going to be our second reviewer and she will complete her review shortly.

Paula-Moraga commented 5 years ago

Package Review

Please check off boxes as applicable, and elaborate in comments below. Your review is not limited to these topics, as described in the reviewer guide

Documentation

The package includes all the following forms of documentation:

Functionality

Final approval (post-review)

Estimated hours spent reviewing: 3 hours


Review Comments

The tiler package enables to build map tiles from geospatial and image files. The tiles created can be used with other packages such as leaflet. Some examples of tiles produced using Star Trek galaxy maps and used with leaflet are here and these are awesome!

The package works fine and the documentation is clear. The package requires Python and the gdal library for Python. This can be tricky to install for some users depending on the OS. When using Windows I needed to add some environment variables and I think these steps need to be better explained in the documentation. Also, it would be great to include in the documentation the code to create a tile and actually use it to produce a leaflet map. Other minor issues and results of the automated tests are below.

Congrats on the package!

Installation

I use Windows 10 and I needed to download and install OSGeo4W64.

To make the package work I needed to execute this: tiler_options(python = "C:/OSGeo4W64/bin/python.exe", osgeo4w = "C:/OSGeo4W64/OSGeo4W.bat")

Then I tried the package adding the Windows environment variables instead. As it is specified in the documentation, I added C:\OSGeo4W64 to the Windows environment variable PATH so R can find OSGeo4W.bat. Then I executed tile(map, tile_dir, "0-3") and I got a Warning message with status 127. I fixed that by adding C:\OSGeo4W64\bin to the Windows environment variable PATH so R can find python.exe.

Then I executed tile(map, tile_dir, "0-3") again and I got a Warning message with status 1. I fixed that by creating the environment variable PYTHONHOME with value C:\OSGeo4W64\apps\Python27/ That way R can find the local python installation path.

Documentation

Automated tests

devtools::check()

R CMD check results
0 errors | 0 warnings | 1 note 
checking package dependencies ... NOTE
Package suggested but not available for checking: 'bmp'

devtools::test()

Loading tiler
Loading required package: testthat
Testing tiler
√ | OK F W S | Context
x |  0 1 1   | lints
--------------------------------------------------------------------------------
test-lintr.R:4: warning: Package Style
incomplete final line found on 'C:/Users/moragasp/tiler-master/tiler-master/.lintr'

test-lintr.R:4: error: Package Style
Invalid DCF format.
Regular lines must have a tag.
Offending lines start with:
  inst/.lintr
1: lintr::expect_lint_free() at C:\Users\moragasp\tiler-master\tiler-master/tests/testthat/test-lintr.R:4
2: lint_package(...)
3: read_settings(path)
4: read.dcf(config_file, all = TRUE)
5: stop(gettextf("Invalid DCF format.\nRegular lines must have a tag.\nOffending lines start with:\n%s", 
       paste0("  ", lines, collapse = "\n")), domain = NA)

--------------------------------------------------------------------------------
test-tile.R:2: warning: (unknown)
package β€˜raster’ was built under R version 3.4.4

test-tile.R:2: warning: (unknown)
package β€˜sp’ was built under R version 3.4.4
--------------------------------------------------------------------------------
√ |  5       | viewer

== Results =====================================================================
Duration: 11.3 s

OK:       28
Failed:   1
Warnings: 3
Skipped:  0

goodpractice::gp()


It is good practice to

  βœ– write unit tests for all functions, and all package code in general. 89% of code lines are covered by test cases.

    R/tile.R:79:NA
    R/tile.R:80:NA
    R/tile.R:83:NA
    R/tile.R:84:NA
    R/tile.R:87:NA
    ... and 14 more lines

Warning messages:
1: In readLines(file) :
  incomplete final line found on 'C:/Users/moragasp/tiler-master/tiler-master/.lintr'
2: In MYPREPS[[prep]](state, quiet = quiet) : Prep step for linter failed.

spelling::spell_check_package()

DESCRIPTION does not contain 'Language' field. Defaulting to 'en-US'.

spelling::spell_check_files("README.Rmd")

  WORD             FOUND IN
AppVeyor         README.Rmd:25
codecov          README.Rmd:26
CRS              README.Rmd:34
georeferencing   README.Rmd:45
github           README.Rmd:2
gitter           README.Rmd:28
notfying         README.Rmd:64
OSGeo            README.Rmd:69
Rdoc             README.Rmd:23
leonawicz commented 5 years ago

@Paula-Moraga thanks for your review! :) Sorry for delays, work has been very busy lately.

The function tile_viewer is for edge cases where the preview.html file associated with a set of map tiles needs to be created because it is missing/deleted or because it must be re-created. For example, if someone runs tile multiple times with different zoom level settings and resume = TRUE, the preview.html is created every time tile is run. But the final time it is created when running title, it will not include all zoom levels. Running tile_viewer afterward with the full zoom range specified will re-create the file again, with proper full zoom level range. But no need to create tiles which already exist.

I will look into adding a visible leaflet example that demonstrates the resulting tiles soon. This is ideal, I just haven't had time to do yet. Also fixing the tile_dir specification in the Local preview section of the documentation.

I'm currently at my limit for the moment in terms of system installation knowledge/experience. I only have one Windows 10 system to test installation and use. It worked for me but I do not have the broader OS experience to be able to determine what an ideal generic solution for Windows installation that works for all users would be. I am even more limited with my knowledge about how to install system requirements on Linux at the moment, and Mac is not even in the picture for me. This is a problematic situation, but unfortunately not one I have been able to resolve on my own yet.

Paula-Moraga commented 5 years ago

@leonawicz Thanks for the tile_viewer() explanation. Maybe it is useful to add this explanation in the vignette. I agree it is hard to write installation guidelines that work for everybody. Looking forward to the leaflet example!

leonawicz commented 5 years ago

@Paula-Moraga I still have to update the vignette with a mention about tile_viewer, but for now please see the updated vignette regarding the fun Leaflet examples. :)

I have added two examples, one geographic and one non-geographic, using leaflet to display remotely hosted tiles that were originally created with tiler. The code is shown for the original calls to tile that generated these tiles as well as the leaflet code for using them in the interactive maps shown.

These are located in the final section "Serving map tiles," in a Leaflet Examples subsection right before the Local Preview subsection. The Local Preview section is where I will also mention tile_viewer when I get to that next. Let me know what you think. Thanks!

Paula-Moraga commented 5 years ago

@leonawicz The leaflet examples are not working for me. Could it be that the variables tiles <- "https://leonawicz.github.io/tiles/us48lr/tiles/{z}/{x}/{y}.png" and tiles <- "https://leonawicz.github.io/tiles/st2/tiles/{z}/{x}/{y}.png" are not right?

leonawicz commented 5 years ago

I have been checking here after using pkgdown and hosting online with the GitHub repo: https://leonawicz.github.io/tiler/articles/tiler.html

The Leaflet widgets in the tiler.html file are also displaying for me locally.

Are you seeing something different?

leonawicz commented 5 years ago

Oh wait, I think I understand. If you mean the code is not working in RStudio, click the little button at the top of the map viewing pane to open the widget in your browser. Then it may display. Alternatively, run the code in regular R (not RStudio). This should also work automatically. Let me know if this fixes it. I don't know the details, but remotely hosted components may not display automatically in RStudio's preview pane.

Paula-Moraga commented 5 years ago

Yes, that was the reason! I do not see them in RStudio's preview pane but when I click the right panel it works perfectly! The examples you chose are great, thank you!

karthik commented 5 years ago

@leonawicz πŸ‘‹ I just wanted to check in on the status of this review. Have all of the issues raised by @Paula-Moraga been addressed now?

leonawicz commented 5 years ago

@karthik @Paula-Moraga I think so??? I've done everything I planned on doing

There are some other issues I mentioned earlier that I am unable to do. See https://github.com/ropensci/onboarding/issues/226#issuecomment-414060516 for example of something I really can't figure out, but don't know how critical it is- I defer to your judgement on the necessity. https://github.com/leonawicz/tiler/issues/6

Side note: I pushed a small Windows-only bug fix to CRAN last week which is pending (v0.2.1).

karthik commented 5 years ago

Thanks @leonawicz! I see that all issues have now been addressed. I'll proceed with accepting your package.

Congrats @leonawicz, your submission has been approved! πŸŽ‰ Thank you for submitting and @jasdumas and @Paula-Moraga for thorough and timely reviews. To-dos:

[![ropensci_footer](https://ropensci.org/public_images/ropensci_footer.png)](https://ropensci.org)

Welcome aboard! We'd also love a blog post about your package, either a short-form intro to it (https://ropensci.org/technotes/) or long-form post with more narrative about its development. ((https://ropensci.org/blog/). If you are, @stefaniebutland will be in touch about content and timing.

leonawicz commented 5 years ago

@karthik @jasdumas @Paula-Moraga Thank you all for your help throughout! :)

I will find time in the next day to complete the documentation updates and complete the transfer.

Paula-Moraga commented 5 years ago

Congrats, @leonawicz!

stefaniebutland commented 5 years ago

Hello @leonawicz and congratulations. This link will give you many examples of blog posts by authors of onboarded packages. In case you are considering writing one, here are some technical and editorial guidelines: https://github.com/ropensci/roweb2#contributing-a-blog-post.

No obligation to do this. Happy to answer any questions.