Profile for Mr. R. Wilson > Reviews

Personal Profile

Content by Mr. R. Wilson
Top Reviewer Ranking: 599,824
Helpful Votes: 26

Learn more about Your Profile.

Reviews Written by
Mr. R. Wilson (UK)

Page: 1
Programming Arcgis 10.1 with Python Cookbook
Programming Arcgis 10.1 with Python Cookbook
by Eric Pimpler
Edition: Paperback
Price: 25.78

1 of 1 people found the following review helpful
3.0 out of 5 stars Provides "quick answers to common problems", but 'cookbook' style doesn't go into more depth, 19 Mar 2013
Summary: A useful guide to automating ArcGIS using Python, which is fully up-to-date with the latest version of ArcGIS. Definitely provides "quick answers to common problems", but it may take more effort to get a deep understanding of the methods used. Good breadth of coverage - but notably lacks raster examples - and well explained throughout. I have recommended to colleagues using ArcGIS who want to start off with Python.

I wrote this review in consultation with my wife, Olivia, who has been an ArcGIS user for a few years, but is fairly new to Python programming (she's done a bit in the last few months, but nothing within ArcGIS). I am more experienced with Python - having released a number of packages to the Python Package Index, and having used Python with ArcGIS in various contexts with both ArcGIS 9.3 and 10.1, but I thought it would be useful to get an opinion from both a more- and less-experienced user.

We both found the book useful, and learnt a lot from it, but weren't entirely convinced by the cookbook format. In general, if you like cookbook-style books then this is likely to appeal to you, but if they annoy you then you won't like it. The benefits of the cookbook format are that it is very easy to pick up the book, find the relevant recipe for what you're trying to achieve, turn to it and do it immediately, as each recipe is almost entirely self-contained. Of course, the disadvantage is learning in this way lends to lead to superficial knowledge rather than deep understanding: you may know what to do to achieve a certain result, but not why you're doing it, and thus cannot adapt the recipes easily to other situations. Another disadvantage is that the recipes are often very repetitive - for example, each recipe in this book starts with the saying "Import the ArcPy module using import arcpy", and often "import arcpy.da" - something which could be mentioned once and then referred to in future recipes.

Moving away from the cookbook format, which is very much a matter of personal taste, the book covers a wide range of tasks that you can scripts using Python in ArcGIS including interacting with the map window, laying out and printing maps, running geoprocessing operations and accessing the raw data in each layer. The ordering of the book may seem strange to you if you are interested in automating processing operations, rather than automating layout and map style operations, as the geoprocessing part of the book doesn't start until chapter 6. However, when you get to this section it is very good, and chapters 6 to 9 provide almost all of the information needed to automate geoprocessing tools either using the built-in ArcGIS geoprocessing tools, or by writing your own geoprocessing algorithms using the raw spatial and attribute data.

I was impressed to see coverage of creating ArcGIS Addins using Python in chapter 11, as many ArcGIS experts are not aware of the possibility of creating addins using Python. These addins can provide very user-friendly ways to interact with processes which have been automated in Python, so it is good to see they were covered in this book. I was also pleased to see a chapter on error handling which covers both generic Python error-handling techniques (such as the try-except block) and ArcPy-specific methods, including how to get error messages from ArcGIS into Python. However, there is a noteable absence of any recipes involving raster data - the only exception is in chapter 10 when the use of the Describe() function to find out information about images is explained. However, ArcGIS 10.0 introduced various functions to operate on rasters - including returning the raster data as a numpy array, and allowing updates of raster data from numpy arrays - the coverage of which would really have made the book complete.

In terms of ancilliary information in the book: there is a useful twenty page introduction to the Python language, as well as useful appendices covering automation of Python scripts (using the Windows command-line, and Task Scheduler) and "Five Things Every GIS Programmer Should Know How to Do with Python" (including downloading via FTP, sending emails, and reading various types of files).

The book is generally well-written and formated, and things are explained well - although the quality of the images used is lacking sometimes (with JPEG compression artefacts clearly visible). Overall, the book is a very useful addition to a GIS library for people who are new to automating ArcGIS using Python, and particularly those who want to find out quickly how to automate a particular operation.

R Graph Cookbook
R Graph Cookbook
by Hrishi Mittal
Edition: Paperback
Price: 28.84

6 of 6 people found the following review helpful
4.0 out of 5 stars Very useful for reference while producing graphs, and very comprehensive, 11 Mar 2011
This review is from: R Graph Cookbook (Paperback)
As a scientist I often need to plot graphs of my data, so I am keen to learn more about how to do this in various languages. I tend to use R for most of my statistical analysis, so plotting graphs in R is something that I often need to do. I have a bit of knowledge about R already (mainly gained from the books that I have previous reviewed about R), and looked to this book to explain more about graphing in R. As stated in the title it is a `cookbook' - a type of technical book that provides a number of `recipes' for performing various tasks, and this is both one of the main advantages and main disadvantages of this book.

However, I am pleased to say that this book is actually very good. It starts with an overview chapter that contains basic recipes for plotting various types of graphs (all of which are covered in greater detail later on in the book) as well as exporting the graphs to be used in other documents. Then comes one of the most important chapters - a detailed explanation of the par() command for adjusting parameters such as margins, colours, fonts and styles. Again, this is presented in `recipe' form (of which more below) which again is a double-edged sword: it makes it easy to find the parameter setting you're looking for, but harder to get an overview of the range of different parameters you can set. A simple table at the end of this chapter listing the parameters and the possible options for each of them would have been very useful - but was sadly not included.

The rest of the book goes through a number of types of graph, providing detailed recipes for creating them. They start with the most important types of plot: scatter graphs and line graphs (with a helpful emphasis on plotting time-series data with sensible axes labels) before moving on to bar charts, pie charts, histograms and box and whisker plots. All of this would be expected in a book on graphing software - however, this book goes further by providing a section on heat-maps and contour plots, and then a section on creating maps. The heat-maps section is particularly interesting, and I can see a number of applications of the example visualisations they have provided. The book then closes with a chapter on exporting graphs for display - both to raster and vector formats.

As mentioned already, all of the information is provided in the form of `recipes', which have a standard format of: introduction, getting ready, how to do it, how it works..., there's more... and see also. This tends to work well for most parts of the book - with the introduction explaining the type of graph and why you might want to use it, getting ready showing you how to load the required libraries, how to do it providing code and how it works explaining the code, with more options being explained in there's more and see also. However, this falls down slightly when dealing with topics that require a little more explanation - such as the section on exporting graphics for publication, which could really do with having a more detailed section on the difference between raster and vector output, and how to choose between them.

The book generally choses sensible datasets to plot for each graph, although at times the code is made unnecessarily confusing by adding lots of code to download datasets via web APIs (useful to be able to do, but perhaps not hugely relevant to the topic of this book). Apart from this, the code is generally well written, although some extra comments in the code might have been helpful - as it would save me constantly referencing between the how to do it and how it works sections.

Overall, I will definitely keep this book on my shelf as a handy reference for when I need to create a graph quickly in R, although I would recommend combining this book with another book (for example R in a Nutshell) for more details on the graphing functions and the rest of R.

(Disclaimer: I was given a free review copy of this book)

Python Geo-Spatial Development (Community Experience Distilled)
Python Geo-Spatial Development (Community Experience Distilled)
by Erik Westra
Edition: Paperback
Price: 30.99

7 of 7 people found the following review helpful
5.0 out of 5 stars Great book - both for GIS concepts and for teaching Python libraries, 2 Mar 2011
The book is divided into four main sections: the first introduces general GIS concepts, the second explains basic GIS operations in Python, the third shows how to use databases with geographic data and the fourth combines all of the previous information into two GIS web-apps. It is always difficult to work out what level to pitch this sort of book at - as a number of potential readers will already have experience with GIS (and are using the book to learn about doing GIS analysis in Python, like me), but some will be complete beginners who want to introduce map-based analysis into their applications. The first few chapters of this book are pitched nicely at a mid-point between these two reader groups: the author explains things clearly and precisely without seeming patronising. Although I already knew much of the basics, I found the section on projections and co-ordinate systems very useful as I had never properly understood these (I'd always seen the different options in software I was using for Projected Co-ordinate Systems and Geographic Co-ordinate Systems, but I never knew the difference until I read this book!).

The next section explains how to use a number of Python GIS libraries such as GDAL/OGR, PyProj, and Shapely. The author starts with a general description of the capabilities of each library, and continues with a `cookbook-style' approach showing how to do various tasks with these libraries. For example, instructions are given for how to convert projections and calculate Great Circle Distances with PyProj, how to extract shape geometries and attributes from shapefiles using OGR and how to do basic GIS analysis with Shapely. Details are given on joining these libraries together to exchange data between them using the very useful Well-Known Text (WKT) format - a format that I hadn't come across, but which appears to be very useful. This section finishes by putting together a number of these libraries to do some real-world tasks such as identifying parks near urban areas.

The third section focuses on geodatabases - an area I know very little about. This section gives a good overview of the concept of a geodatabase, and then specific details about three geodatabases: PostGIS, MySQL and SpatiaLite. I was pleased to see that three contrasting databases were chosen, and a good listing of advantages and disadvantages of each was given. After introducing the workings of these databases, code examples for linking them to Python are given, starting from basic queries and going right up to complex spatial analysis performed within the database. A geospatial application (called DISTAL) is then implemented, showing how to combine geodatabase access with the GIS analyses explained in the previous section. This is implemented as a web-application, but previous experience with web programming is not needed as it is implemented using simple Python CGI scripts, and there are sidebars explaining terms that the reader may not have come across before.

The fourth section is by far the most complicated, and deals with producing maps using a library called Mapnik and producing geo-enabled web-applications using GeoDjango. I must admit that I didn't quite follow all of this chapter, although this is probably because I'm not hugely interested in, or experience with, building web-apps. In some ways a little too much emphasis is made of how to do things using Django - and trying to introduce any web-app framework (be it Django, Ruby on Rails, or anything else) in one chapter is a tall order - and not enough on the GIS, but I can see why the author included it - as it brings together a fair amount of the tools covered in the book into one coherent whole.

Overall, I'm very impressed with this book. If I had my way (and you never know, if I end up as a lecturer one day I might...), I'd make Chapter 2 part of the core reading for any GIS course, as I am completely shocked that it covers areas that I have never covered even when doing Advanced GIS courses at degree level! I should mention that as well as the chapters mentioned above there is a useful chapter on sources of geospatial data (which, again, mentioned sources that I'd not heard of), and a comprehensive index which makes it very easy to find things. The instructions on how to use the Python libraries (and, more importantly, how to join them together) are well-written and comprehensive and the introductions to GIS concepts are pitched at just the right level. I would thoroughly recommend this book for any GIS or geospatial data user for two main reasons: firstly, it gives great introductions to GIS concepts they may not have come across, and secondly, knowing how to do these things in Python can make certain jobs so much easier (how about a 10 line Python script rather than a few hours of repetitive data conversion).

Academic Stimulus Package (Piled Higher & Deeper)
Academic Stimulus Package (Piled Higher & Deeper)
by Jorge Cham
Edition: Paperback
Price: 8.75

1 of 1 people found the following review helpful
5.0 out of 5 stars Great fun, 11 Jan 2011
I bought this as a present for my PhD group this Christmas, and it was much enjoyed by everyone. The cartoons are so funny and so much like real life!

Definitely recommended.

R Beginners Guide
R Beginners Guide
by John M. Quick
Edition: Paperback
Price: 26.62

1 of 1 people found the following review helpful
3.0 out of 5 stars Fairly good, but slightly strange underlying story., 11 Jan 2011
This review is from: R Beginners Guide (Paperback)
In summary: If you can get past the strange underlying story, then this gives a good introduction to R to someone with no programming experience. However, if you have any experience with other programming languages then another book is likely to be more suitable.

Overall, this book provides useful and correct information about programming in R, but it is underlain by a strange story about Chinese wars and has a number of niggling problems that prevent me from fully recommending it. The introductory chapter gives a bit of ancient Chinese history, and states that you, the reader, have been chosen to succeed the famous military leader Zhuge Liang and need to learn how to use R to analyse his data and plan the future of the military campaign. The rest of the book takes on this theme, both in the data analysis (comparing the Shu and Wei armies, and predicting battle outcomes using regression) and the general phrasing (headings like "Have a go hero!" and emphasis that if you fail the Chinese kingdom will collapse). I'll be honest: this story doesn't work for me at all. In fact, it drives me nuts having it constantly throughout the book. As for why it annoys me, I'm not entirely sure: probably partly because it seems like the examples have had to be twisted rather to make them fit the story, and partly because I have no interest in ancient Chinese kingdoms, or using R to plan military campaigns.

I understand that not all readers will agree with me here, and that putting a story like this behind the scary process of learning new statistics software may help people get to grips with it. From my point of view I would have preferred to see a range of datasets used from the examples provided with R (all of the datasets listed here are built in to R), as this would (a) mean that the datasets are always available from within R and (b) provide interest for a wide range of readers.

Apart from the issues I have with the underlying story, the book is a good, gentle introduction to R. There are a few slight issues with the code examples (they are all correct, but are written in a rather verbose style). However, the book really is a 'Beginners Guide', so if you have any experience with R or programming then another book may be more suitable.

Image Analysis, Classification, and Change Detection in Remote Sensing: With Algorithms for ENVI/IDL, Second Edition
Image Analysis, Classification, and Change Detection in Remote Sensing: With Algorithms for ENVI/IDL, Second Edition
by Morton J. Canty
Edition: Hardcover
Price: 90.71

5.0 out of 5 stars Very comprehensive and useful, but lots of maths, 30 Nov 2010
Summary: More mathematical than I thought it would be, but very thorough and well explained. I thought that there would be more instruction in how to program in IDL and use the ENVI API, but much of this can be learnt by examining the code given in the book. The book is very comprehensive and most major algorithms are covered in enough detail to allow the reader to implement them.

I purchased this book towards the end of my undergraduate BSc Geography degree, as I was writing a number of image processing algorithms for my undergraduate dissertation, and thought that the book would be useful for the PhD in Remote Sensing that I would be starting soon. I'm happy to say that it has been very useful - read on to find out why.

I did not realise quite how mathematical the book was when I purchased it (I bought it through Amazon), and was slightly scared when I opened it to find headings like Theorem 4.2 and lots of mathematical symbols I'd never come across before! This certainly reminded me that one of key skills I need to improve in the next few years is my ability to read and understand mathematics. Once I got over the shock of seeing so much maths I found the book very useful. To start with I read it without really reading the maths, but have gradually managed to get in to the maths and understand the important bits.

I would recommend thoroughly reading and understanding Chapter 1 for those readers who don't have much mathematical experience. I jumped in to later sections, but found that I could understand them far better once I'd read the basic material at the start. However, for someone with a higher mathematical understanding the later sections are likely to be able to be understood on their own.

So, what do these later sections contain? Well, the book can be divided into three main sections: Image Analysis, Classification and Change Detection (as you might expect from the title). Image analysis includes everything from simple image statistics and transformations (such as MNF and PCA) to filters, feature extraction and topographic modelling. Classification is split, as you would expect, into Unsupervised and Supervised, with sections focussed on Support Vector Machine classification and post-classification analysis. Finally, the Change Detection section focuses mainly on Canty's own work on Multivariate Alteration Detection, but also covers some other methods such as simple differencing and PCA-based change detection.

I was impressed that Canty explains each algorithm from the `bottom up' (which is where all of the mathematics comes in), in enough detail to allow the reader to write their own implementation. Where appropriate he mentions the ENVI built-in functions and often provides an explanation of the differences between ENVI's implementation and the mathematics he has described. This approach has proved very useful for me when attempting to implement simple algorithms in languages such as Python.

The Appendices provide more mathematical information, efficient algorithms for neural-network training and, most importantly, a list of all of the ENVI code which is available from the author's website. This code is well documented and of high quality, with good error-checking (a nice change to a lot of ENVI/IDL code that I have seen).

Overall, this book is a very useful addition to my Remote Sensing library. Simple answers about algorithms can be gained more easily from other books, but this provides the in-depth approach when that is required. I would recommend this book to postgraduate students, as most undergraduate students would not have the time or mathematical ability to make full use of it. It will be most useful to researchers who are implementing existing image analysis algorithms or those who are developing their own algorithms and want to see what has been done already so they can extend them. The focus on MAD in the Change Detection section is particularly useful as an example of a modern quantitative remote sensing algorithm.

A Thousand Years of Nonlinear History (Swerve Editions)
A Thousand Years of Nonlinear History (Swerve Editions)
by Manuel De Landa
Edition: Paperback
Price: 11.16

10 of 13 people found the following review helpful
4.0 out of 5 stars Useful but strange, 5 Dec 2007
I wrote the following review as part of my BSc Geography degree.

When dipping into a chapter entitled Geological History 1000-1700 AD one would expect to find information on rock types, the development of landforms and possibly the history of the development of geological though. In Manuel De Landa's book A Thousand Years of Nonlinear History however, this is not the case - what will actually be found is discussion of Christaller's Central Place Theory, the development of urban areas in both Europe and the Far East and different philosophical perspectives on these. This aspect of surprise continues throughout the book - De Landa's approach to all the topics covered is novel, and the insights gained from these approaches are huge.

Although the book is entitled A Thousand Years of Nonlinear History, it is by no means a standard history book - it focuses on the application of historical processes, and generally the passage of time, to many areas within human geography. The most important word in the title is probably "nonlinear" as this is the way in which De Landa approaches all the areas covered in his book. It is very difficult to define what is meant by nonlinear - the author takes many pages for his explanation - but simply put it is considering history as a tree with many branches rather than one pure and straight linear course. This idea of nonlinearity is extended throughout the book to cover different types of nonlinear development (such as hierarchies and meshworks) and is used as part of the explanation for many areas of geographical development.

The book is divided into three parts (Lavas and Magmas, Flesh and Genes and Memes and Norms) each of which contains chapters which look at the specified topic from 1000-1700 AD and then from 1700-2000 AD. Sandwiched in the middle of each part is a section elaborating on some of the ideas introduced in the part - for example the Sandstone and Granite chapter within Lavas and Magmas elaborates on the ideas of hierarchies and meshworks, their definitions (within a variety of fields from biology to economics) and their effect on the development of urban geography. As mentioned in the first paragraph of this review, the names of the parts are metaphors for the content within them. For example, the first part is entitled Lavas and Magmas, and this metaphor is explained towards the end of the part by an analogy between lava and the physical constructs of cities. Some of these analogies are rather tenuous, but they all serve to give interesting new perspectives on familiar aspects of human geography.

Although De Landa's book is very interesting, and in many ways unique, it is also a difficult read. This is really par for the course when one is explaining the sort of complex ideas which are used in this book, and some may find this book completely inaccessible because of the complexity of the ideas discussed. The majority of topics are explained very well - but some topics come across as rather confusing. Also, some of the language is rather pretentious, and one can't help feeling that some of the ideas are not quite as complex as De Landa makes them out to be.

The presentation of A Thousand Years of Nonlinear History is, like the rest of the book, rather unusual. The striking front cover design makes the book stand out on a bookshelf - although the complexity of this cover design hinders the reading of the blurb on the back - one of the first places a prospective reader will look for information about the book. The choice of font size throughout the book is also interesting. De Landa has chosen to use larger font sizes at the beginning of each chapter - gradually reducing to a rather small font for the majority of each chapter and then increasing again towards the end. I assume this was chosen to accentuate the introduction and conclusion of each chapter - and in some ways that is a good aim. However, this has not helped my reading of the book - or my identification of the important parts of the chapter. It also has the side-effect of making the body of the chapter look very small, and this has made it quite difficult and tiring to read.

Overall, De Landa's book is a very interesting read. It takes a new approach to almost every topic covered and provides much food for thought. Although A Thousand Years of Nonlinear History should not be used as the main text for any of the topics covered it provides much useful background reading. Some parts of the book are difficult to read and understand, but perseverance will result in appreciation of the new perspectives raised by this usual book.

Page: 1