Surrey’s Vascular Plants and Charophytes: Analysis of the Number of Records and Taxa per 1km Square (monad) by Date Class (Year range) Skip to Records Analysis Spread Sheet Skip to Taxa Analysis Spread Sheet Surrey covers 2,102 monads, including 1,833 complete monads, 137 with 50% to 99% coverage and 132 with 1% to 49% coverage. The number of records and taxa of Vascular Plants and Charophytes accumulated by the Surrey Botanical Society and stored in MapMate as at 1st September 2011 stood at 285,037 An analysis of all these records revealed monads without records. A list of monads and the percentage of each 1km square in Surrey was copied from the Biological Records Centre and pasted into a MS Access table. This table was then merged with the list of Surrey 1km Squares from MapMate. Image of OS Map with a UK OS grid and Surrey VC boundary overlay developed by Robin Day (see OS Grid with overlay for the whole of Britain including Northern Ireland) The 1km Squares straddling the VC Boundary were checked against an OS Map with a UK OS grid and a Surrey VC boundary overlay developed by Robin Day from code to Bill Chadwick provided for SBS use, to produce a ‘ map’. The majority of records (c.96%) are at a sufficient precision to enable analysis at the monad (1km Square) level (see Appendix 1). Image of Excel Spread Sheet showing percentage of each 1 km Square in Surrey. The darker the green the less percentage cover. The analyses for each Date Class and all years were carried out in MS Access using queries developed for the purpose, with assistance from David Williams (see Appendix 2 for records & Appendix 3 for taxa). Date Class Year range DC 0 Pre 1929 DC 1 No. of records No. of taxa Cumulative no. of taxa 673 323 323 1930-1969 7,267 1,024 1,097 DC 2 1970-1986 13,407 1,412 1,548 DC 3 1987-1999 16,997 2,058 2,150 DC 4 2000-2009 147,375 1,984 2,421 DC 5 2010-2019 46,305 1,426 2,473 Date Classes, Year range and numbers of records and taxa. N.B. The Date Classes are historical and not intended to allow comparison between the number of records for each class. The resulting Crosstab tables were first sorted in descending order and then copied and pasted into an Excel spread sheet prior to reformatting the data to produce a ‘map’ for each Date Class and for all records see Appendix 4). Image of Excel Spread Sheet showing the number of Surrey records per 1km Square from 1666 to 2011. Acknowledgements I am extremely grateful to David Williams, Robin Day and Peter Wakeham for invaluable assistance and Bill Chadwick who provided the code for SBS use which Robin adapted Brian Pitkin, 21 September 2011 Skip to Records Analysis Spread Sheet Skip to Taxa Analysis Spread Sheet Appendix 1 Length of OSGridRef OSGridRef type Number of OSGridRefs Blank Hectads - 10km 4 Square Tetrads - 2km 5 Square 0 Subtotals & Totals 23 0.008 1959 0.687 8389 2.943 10371 Subtotal Monads - 1km Square 8 100m Square 10 10m Square 12 1m Square 6 Percentage of Squares 12.0363 82.051 2.241 0.032 34308 233877 Subtotal Totals 3.638 6388 93 274666 96.361 285037 100 Numbers of Surrey OSGridRefs per 1km Square Appendix 2 - Queries to generate a table of the number of records per 1km Square. Note: To run these queries you will first need to create a table of 1kSquareList by downloading the County list from the Biological Records Centre. Queries must be run in the order listed below. Text in bold is the name of a query and must match exactly character for character. Copy and paste the text into a separate MS Access query. Count records by 1kSquares for all years SELECT DISTINCT [1kSquareList].[1kSquare], [1kSquareList].X, [1kSquareList].Y, Count(Records.[_guk]) AS Totals, Year([Date]) AS Year FROM (Records INNER JOIN Sites ON Records.[*Site] = Sites.[_guk]) INNER JOIN 1kSquareList ON Sites.[_guk] = [1kSquareList].[_guk] GROUP BY [1kSquareList].[1kSquare], [1kSquareList].X, [1kSquareList].Y, Records.Date; Count records per 1kSquare for year range SELECT DISTINCT [Count records by 1kSquares for all years].[1kSquare], [Count records by 1kSquares for all years].X, [Count records by 1kSquares for all years].Y, Sum([Count records by 1kSquares for all years].Totals) AS Totals INTO [Count records per 1kSquare for years selected - Table] FROM [Count records by 1kSquares for all years] WHERE ((([Count records by 1kSquares for all years].Year)>=[Start year] And ([Count records by 1kSquares for all years].Year)<=[End year]) AND (([Count records by 1kSquares for all years].Y)>129 And ([Count records by 1kSquares for all years].Y)<182) AND (([Count records by 1kSquares for all years].X)>479 And ([Count records by 1kSquares for all years].X)<545)) GROUP BY [Count records by 1kSquares for all years].[1kSquare], [Count records by 1kSquares for all years].X, [Count records by 1kSquares for all years].Y; Note: The >479 and <545 (where the leading 4=SU and the leading 5=TQ in the ‘maps’) and >129 and <182 (where the leading 1 is ignored in the ‘maps’) are the absolute limits for Surrey and would need to be modified for other VC’s to ensure that no erroneous MapMate records are included Comparison of records SELECT DISTINCT [All 1kSquares including those with no records].[1kSquare], [All 1kSquares including those with no records].X, [All 1kSquares including those with no records].Y, [All 1kSquares including those with no records].[Totals] AS Totals INTO [Add these Surrey 1kSquares] FROM [Count records per 1kSquare for years selected - Table] RIGHT JOIN [All 1kSquares including those with no records] ON [Count records per 1kSquare for years selected - Table].[1kSquare] = [All 1kSquares including those with no records].[1kSquare] WHERE ((([Count records per 1kSquare for years selected - Table].[1kSquare]) Is Null) AND (([Count records per 1kSquare for years selected - Table].X) Is Null) AND (([Count records per 1kSquare for years selected - Table].Y) Is Null) AND (([Count records per 1kSquare for years selected - Table].Totals) Is Null)); Update - Add these Surrey 1kSquares UPDATE [Add these Surrey 1kSquares] SET [Add these Surrey 1kSquares].Totals = 0; Append missing 1k Squares to Record Count INSERT INTO [Count records per 1kSquare for years selected - Table] ( 1kSquare, X, Y, Totals ) SELECT [Add these Surrey 1kSquares_1].[1kSquare], [Add these Surrey 1kSquares_1].X, [Add these Surrey 1kSquares_1].Y, [Add these Surrey 1kSquares_1].Totals FROM [Add these Surrey 1kSquares] AS [Add these Surrey 1kSquares_1]; Count records per 1kSquare for years selected - Crosstab TRANSFORM Sum([Count records per 1kSquare for years selected Table].Totals) AS [The Value] SELECT [Count records per 1kSquare for years selected - Table].Y FROM [Count records per 1kSquare for years selected - Table] GROUP BY [Count records per 1kSquare for years selected - Table].Y PIVOT [Count records per 1kSquare for years selected - Table].X; SELECT DISTINCT [Count records by 1kSquares for all years].[1kSquare], [Count records by 1kSquares for all years].X, [Count records by 1kSquares for all years].Y, Sum([Count records by 1kSquares for all years].Totals) AS Totals INTO [Count records per 1kSquare for years selected - Table] FROM [Count records by 1kSquares for all years WHERE ((([Count records by 1kSquares for all years].Year)>=[Start year] And ([Count records by 1kSquares for all years].Year)<=[End year]) AND (([Count records by 1kSquares for all years].Y)>129 And ([Count records by 1kSquares for all years].Y)<182) AND (([Count records by 1kSquares for all years].X)>479 And ([Count records by 1kSquares for all years].X)<545)) Appendix 3 - Queries to generate a table of the number of records per 1km Square. Note: To run these queries you will first need to create a table of 1kSquareList by downloading the County list from the Biological Records Centre. Queries must be run in the order listed below. Text in bold is the name of a query and must match exactly character for character. Copy and paste the text into a separate MS Access query. Count taxa by 1kSquares for all years SELECT DISTINCT [1kSquareList].[1kSquare], [1kSquareList].X, [1kSquareList].Y, Taxa.Taxon, Year([Date]) AS Year FROM Taxa INNER JOIN ((Sites INNER JOIN 1kSquareList ON Sites.[_guk] = [1kSquareList].[_guk]) INNER JOIN Records ON Sites.[_guk] = Records.[*Site]) ON Taxa.[_guk] = Records.[*Taxon] GROUP BY [1kSquareList].[1kSquare], [1kSquareList].X, [1kSquareList].Y, Taxa.Taxon, Records.Date; Count taxa per 1kSquare for range selected SELECT DISTINCT [Count taxa by 1kSquares for all years].[1kSquare], [Count taxa by 1kSquares for all years].X, [Count taxa by 1kSquares for all years].Y, Count([Count taxa by 1kSquares for all years].Taxon) AS CountOfTaxon INTO [Count taxa per 1kSquare for years selected - Table] FROM [Count taxa by 1kSquares for all years] WHERE ((([Count taxa by 1kSquares for all years].Year)>=[Start year] And ([Count taxa by 1kSquares for all years].Year)<=[End year]) AND (([Count taxa by 1kSquares for all years].Y)>129 And ([Count taxa by 1kSquares for all years].Y)<182) AND (([Count taxa by 1kSquares for all years].X)>479 And ([Count taxa by 1kSquares for all years].X)<545)) GROUP BY [Count taxa by 1kSquares for all years].[1kSquare], [Count taxa by 1kSquares for all years].X, [Count taxa by 1kSquares for all years].Y; Comparison of taxa SELECT DISTINCT [All 1kSquares including those with no records].[1kSquare], [All 1kSquares including those with no records].X, [All 1kSquares including those with no records].Y, [All 1kSquares including those with no records].Totals AS Totals INTO [Add these Surrey 1kSquares] FROM [Count taxa per 1kSquare for years selected - Table] RIGHT JOIN [All 1kSquares including those with no records] ON [Count taxa per 1kSquare for years selected - Table].[1kSquare] = [All 1kSquares including those with no records].[1kSquare] WHERE ((([Count taxa per 1kSquare for years selected - Table].[1kSquare]) Is Null) AND (([Count taxa per 1kSquare for years selected - Table].X) Is Null) AND (([Count taxa per 1kSquare for years selected - Table].Y) Is Null) AND (([Count taxa per 1kSquare for years selected - Table].CountOfTaxon) Is Null)); Update - Add these Surrey 1kSquares UPDATE [Add these Surrey 1kSquares] SET [Add these Surrey 1kSquares].Totals = 0; Append missing 1k Squares to Taxa Count INSERT INTO [Count taxa per 1kSquare for years selected - Table] ( 1kSquare, X, Y, CountOfTaxon ) SELECT [Add these Surrey 1kSquares].[1kSquare], [Add these Surrey 1kSquares].X, [Add these Surrey 1kSquares].Y, [Add these Surrey 1kSquares].Totals FROM [Add these Surrey 1kSquares] GROUP BY [Add these Surrey 1kSquares].[1kSquare], [Add these Surrey 1kSquares].X, [Add these Surrey 1kSquares].Y, [Add these Surrey 1kSquares].Totals; Count taxa per 1kSquare for years selected – Crosstab TRANSFORM Sum([Count taxa per 1kSquare for years selected Table].CountOfTaxon) AS [The Value] SELECT [Count taxa per 1kSquare for years selected - Table].Y FROM [Count taxa per 1kSquare for years selected - Table] GROUP BY [Count taxa per 1kSquare for years selected - Table].Y PIVOT [Count taxa per 1kSquare for years selected - Table].X;