In order to look at suitable habitats within the larger study area a calcareous grassland layer has been formed with a suitable query,

library(rpostgis)
## Loading required package: RPostgreSQL
## Loading required package: DBI
library(RPostgreSQL)
library(sf)
## Linking to GEOS 3.5.1, GDAL 2.1.2, PROJ 4.9.3
library(mapview)
library(leaflet.extras)
## Loading required package: leaflet
library(dplyr)
## 
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
## 
##     filter, lag
## The following objects are masked from 'package:base':
## 
##     intersect, setdiff, setequal, union
library(raster)
## Loading required package: sp
## 
## Attaching package: 'raster'
## The following object is masked from 'package:dplyr':
## 
##     select
library(elevatr)

conn <- dbConnect("PostgreSQL", host = "postgis", dbname = "nateng" ,user = "docker", password = "docker")


grassland<-st_read(conn,query="select * from calc_grass")
transects<-st_read(conn,query="select * from transects")
counts<-st_read(conn,query="select * from counts")
library(stringr)
grassland %>% filter(str_detect(annex_1, "chalk")) %>% mapview()
# d<-st_buffer(st_union(st_zm(grassland)), 10)
# d<-st_cast(d,"POLYGON")
# d<-st_sf(d)
# d$area<-as.numeric(st_area(d))
# grass_frags<-d
# write_sf(grass_frags,conn)
grass_frags<-st_read(conn,query="select * from grass_frags")
dbDisconnect(conn)
## [1] TRUE
dg2<-rmapshaper::ms_simplify(grass_frags, keep = 0.02,keep_shapes = TRUE)
dist_mat<-st_distance(dg2)
#grass_frags %>% filter(area> 50000) ->dd
cts <- st_centroid(dg2)
## Warning in st_centroid.sf(dg2): st_centroid assumes attributes are constant
## over geometries of x
library(sp)
library(maptools)
## Checking rgeos availability: TRUE
dmat<-dist_mat
library(spdep)
## Loading required package: Matrix
## Loading required package: spData
coords<-st_coordinates(cts)
library(units)
## udunits system database from /usr/share/xml/udunits
dist_mat<-drop_units(dist_mat)
dist<-1000
#units(dist)<-"m"
dist_mat[dist_mat>dist]<-0
nbs<-mat2listw(dist_mat)
#str(nbs)
#plot(nbs,coords)
net<-nb2lines(nbs$neighbours,coords=coords)
net<-st_as_sf(net)
st_crs(net)<-st_crs(dg2)
mapview(net,legend=FALSE) +mapview(dg2,legend=FALSE) ->mp

mp
save(list=ls(),file="grasslands.rob")