The ST_GeneratePoints function in PostGIS does this quite well.
You simply provide it with a geometry and the desired number of points, for example:
SELECT ST_GeneratePoints(geom, 100);
It's implemented following the same approach as your pseudocode, but it prepares (internally indexes) the polygon so that the if point within polygon tests are fast.
If there isn't the need to use PyQGIS, maybe the Random points inside polygons (fixed) algorithm from the Processing Toolbox should return what you are looking for: it allows to specify the number of the points or the density as a parameter (in addition to a minimum distance among them).
Instead, using PyQGIS, you may run this simple code from the Python ...
The analysis you are referring to is called Spatial Pattern Analysis. Your hypothesis regarding whether or not there is an interaction between species point counts can be tested with point pattern analysis. There are a wide selection of tools available to you. Many professional wildlife people use R for these analyses, which provide a rich set of tools (...
Either do what Spacedman suggests (rasterize and sum) or work directly on the polygons:
sp1 <- spPolygons(rbind(c(-180,-20), c(-140,55), c(10, 0), c(-140,-60), c(-180,-20)), attr=data.frame(sp=1))
sp2 <- spPolygons(rbind(c(-10,0), c(140,60), c(160,0), c(140,-55), c(-10,0)), attr=data.frame(sp=2))
sp3 <- spPolygons(rbind(c(-125,-20), ...
You need to look into spatial point pattern analysis. Here's a course from the world expert that uses R.
I'm not aware of any Python spatial stats library, but you can easily compute things like nearest-neighbour distribution statistics for a quick assessment of whether a point pattern is clustered, completely random, or ...
Just following the same process again will overwrite your previous toolboxes and should work as a redistribution mechanism. distutils doesn't have a built-in delete mechanism (you'd have to go to pip and friends for that) so this is probably the fastest viable option for redistribution during development.
If you use bdist_wininst to distribute .exe ...
I can't tell you how to do it in ArcGIS, but with QGIS (free) it's pretty easy and straight forward.
Note: Stick with the 2.6.1 version, as 2.8 is still a bit buggy.
As i do not have your data, i downloaded some maritime census data from OBIS.
1) Open QGIS and install the Heatmap and OpenLayers Plugins
2) Import Web>OpenLayers>GMaps>Satellite as a ...
I can't be sure from your description but it reads as though the second sheet is identical to the first one, the only difference being the additional description column. So I'll work on that basis.
It reads as though some or all of your x and y values may be text. So the first thing I would do is add another two columns (say, 'X_new' and 'Y_new') and, ...
You could use the Join Attributes by Location tool from the toolar (Vector > Data Management Tools > Join Attributes by Location) and select your polygon layer as the Target layer and your grid layer as the Join layer. Then choose to take a summary and select any of the options (doesn't matter which if you're only interested in the count which is default):
My suggestion is to extract the XY coordinates of your points based on whatever GIS you are using, then measure the entropy of your point distribution in a given extent. See wikipedia for details about entropy. There is a Python module (pyentropy)for advanced tools
(in case you don´t have a classified image already and/or if that´s new to you)
Try the Semi-Automatic Classification Plugin, you find the user manual and some examples/tutorials here. The general steps are to
enhance spectral signature/general image preprocessing:
Especially multi band imagery should be spectrally cleaned and enhanced in ...
If these points are randomly generated (e.g. for sampling and/or QA purposes) you could try running the Create Random Points tool twice, once for the "A" and once for the "B" sites, add a field and calculate to "A" / "B", then Merge the results into a single feature class. I tested this approach, generating a total of 1000 points and the results are okay ...
You can use suggestion by @Ben S Nadler, but there is a risk of high concentration of Bs and very little As:
If you need them more or less near each other, this is tough. I tested grouping technique described here on 100 points and it failed for 2 groups:
Can be fixed manually though...
According to the help doc of 'Linear interpolation' module of Network plugin
you can set "Flow direction" to '0' for closed switches and to '3' for opened one.
Flow direction :
‘0’ : prohibited link
‘1’ : one way link, in the same direction of digitizing
‘2’ : one way link, in the opposite direction of digitizing
‘3’ : two way link
for this use an ...
You need a query to select by attributes, and then run your analysis on those selected. Open up the attribute table of the layer that has population information, and note the variable name. Then "Select by Attribute", select the population variable, and type in >100,000. (This is a SQL query; Python is also possible but not necessary for what you're doing.) ...
Normally they follow a parabolic fractal distribution (like towns, oil fields, coasts etc...) cf. Benoit Mandelbrot's original work
That should give you a starting point:
Now in terms of implementation could you tell more about your fluency in Postgis for PostgreSQL which seems to me the way to ...
First make sure your fishnet layer has a unique ID field, we'll assume it's called Id.
I would assume that each feature in your fishnet layer has the same area, but just in case calculate the area for each feature in a new field called AREA.
Run the Intersection tool under the Vector -> Geoprocessing Tools menu. Choose your fishnet layer for the input layer ...
Create a vector grid with required settings(extent, spacing) and choose output type as polygon
vector > research tools > vector grid
perform an intersection with the species distribution layer.
vector > geoprocessing tools > intersection
Calculate the area of each polygon of the newly generated layer.
join a area attribute to grid layer
create the ...
You can load the table with Layer -> Add layer -> Add delimited text layer and tell qgis which column is lat and which contains long information. Then you can change the visualization in the properties (style) of the just loaded layer
I have a definite answer now, from input .tif down to exporting a .tif file for further use in QGIS or ArcGIS.
input_tif <-'any_tif_should_run.tif' # loading .tif file
input_raster <- raster(input_tif)
buffer_area <- readOGR('buffer_area.shp') # load shapefile of buffer if randomized area should be clipped ...
Based on your example, I am not entirely clear as to what you are after. It looks like you would like to generate a random number in a specified normal distribution using rasters to define what the mean and standard deviations are at each cell. This is fairly common in exploring uncertainty of spatial estimates. Perhaps something like this would work.
If you have access to the ArcGIS Spatial Analyst extension, I would use the Region Group tool, then filter on value and count using the Con or SetNull and Lookup tools.
You could chain them together in the Raster Calculator, using something like (completely untested...!): (assuming a value of 2 = "yellow" pixels and grey pixels are NoData/null)
You could try a matrix regression to derive the temporal correlations (ie., Partial Mantel Test on two pairwise-distance matrices or Mantel Test on single, cross-distance matrix) or you could apply Dutilleul's (1993) modified t-test.
Sorry, I just can't think of an "out-of-box" solution available in ArcGIS or GME. You may want to take a look at the "Spatial ...
The UK government provides a dataset on all UK postcodes under a modified UK OGL license.
Some factors you may want to consider in your analysis:
Distribution Reference: Population or Occupied Housing Units
Gross Domestic Product (GDP) per capita
Government Subsidized Housing ...
Well I can think of the following approach. I assume that you don't have access to the whole dataset of the entire postcodes. In general spatial distribution of postcodes will be similar to the population density or to the density of buildings. You can easily get most of the buildings of the UK from the OpenStreetMap. Converth them to points. Create a kernel ...
Issues to consider for storing data:
It makes sense to keep one data set stored on one site.
Keep the data stored in such a way that it can be versioned and easily updated.
Stay away from product related storages like ESRI or DIVA-GIS. We can rely on standards being here in some years time. Companies - probably not.
Datasets should have an adress which ...
You could host your data in one of several places. The more places hosting it the less likely it will disappear?
As it is an ESRI file format why not consider ArcGIS.com as a repository.
I've found DIVA-GIS to be useful, may be they will host it for you?
The long standing geocomm website may host it for you?
May be openstreetmap?