Convert lists of coordinates to multiple lines based on ID at start of each block of coordinates Planned maintenance scheduled April 17/18, 2019 at 00:00UTC (8:00pm US/Eastern) Announcing the arrival of Valued Associate #679: Cesar Manara Unicorn Meta Zoo #1: Why another podcast?Creating a loop for Lines data (spatial data)Convert coordinates from readShapePoly in R to long-lat coordinatesClip multiple .las files data to polygon shapefile using FUSIONExtract all the polygon coordinates from a SpatialPolygonsDataframe?Add information from a raster nc-file to a polygon shapefileFilled Polygons using ggplot in R not workingsmooth (Lon, Lat, Value) data over shapefile / smoothed data on shapefileAny workaround to extract plain text data in ASCII from `netCDF` file in Rhdf to gtiff, reprojecting, cropping with a shapefile in batch using RUsing R to create a choropleth generated from lat/lon lists - with data generated internally
Problem when applying foreach loop
Complexity of many constant time steps with occasional logarithmic steps
Single author papers against my advisor's will?
What is the largest species of polychaete?
I'm having difficulty getting my players to do stuff in a sandbox campaign
Why don't the Weasley twins use magic outside of school if the Trace can only find the location of spells cast?
Need a suitable toxic chemical for a murder plot in my novel
Active filter with series inductor and resistor - do these exist?
What LEGO pieces have "real-world" functionality?
Can't figure this one out.. What is the missing box?
How to market an anarchic city as a tourism spot to people living in civilized areas?
Slither Like a Snake
The following signatures were invalid: EXPKEYSIG 1397BC53640DB551
Working around an AWS network ACL rule limit
Fishing simulator
Aligning matrix of nodes with grid
Who can trigger ship-wide alerts in Star Trek?
Two different pronunciation of "понял"
What's the point in a preamp?
Stars Make Stars
What do you call a plan that's an alternative plan in case your initial plan fails?
Limit for e and 1/e
Is there a documented rationale why the House Ways and Means chairman can demand tax info?
Why does tar appear to skip file contents when output file is /dev/null?
Convert lists of coordinates to multiple lines based on ID at start of each block of coordinates
Planned maintenance scheduled April 17/18, 2019 at 00:00UTC (8:00pm US/Eastern)
Announcing the arrival of Valued Associate #679: Cesar Manara
Unicorn Meta Zoo #1: Why another podcast?Creating a loop for Lines data (spatial data)Convert coordinates from readShapePoly in R to long-lat coordinatesClip multiple .las files data to polygon shapefile using FUSIONExtract all the polygon coordinates from a SpatialPolygonsDataframe?Add information from a raster nc-file to a polygon shapefileFilled Polygons using ggplot in R not workingsmooth (Lon, Lat, Value) data over shapefile / smoothed data on shapefileAny workaround to extract plain text data in ASCII from `netCDF` file in Rhdf to gtiff, reprojecting, cropping with a shapefile in batch using RUsing R to create a choropleth generated from lat/lon lists - with data generated internally
.everyoneloves__top-leaderboard:empty,.everyoneloves__mid-leaderboard:empty,.everyoneloves__bot-mid-leaderboard:empty margin-bottom:0;
I have a list of XY coordinates along multiple lines. The lines are separated by a single identifier at the start of each block of coordinates. How do I convert this to multiple lines linking the identifier to the lines in R so that I can output them as a shapefile? The problem is in parsing the data to link the ID with the subsequent coordinates.
The data is in the following format:
ID1
3285.48 -63.32
3285.14 -64.14
3284.67 -63.56
3285.00 -62.77
ID2
3299.84 -76.82
3299.25 -75.38
3299.96 -75.76
ID3
3299.76 -86.92
3299.77 -86.89
3299.76 -87.04
3299.76 -87.23
3299.74 -87.25
3299.68 -87.22
3299.68 -87.11
r command-line
add a comment |
I have a list of XY coordinates along multiple lines. The lines are separated by a single identifier at the start of each block of coordinates. How do I convert this to multiple lines linking the identifier to the lines in R so that I can output them as a shapefile? The problem is in parsing the data to link the ID with the subsequent coordinates.
The data is in the following format:
ID1
3285.48 -63.32
3285.14 -64.14
3284.67 -63.56
3285.00 -62.77
ID2
3299.84 -76.82
3299.25 -75.38
3299.96 -75.76
ID3
3299.76 -86.92
3299.77 -86.89
3299.76 -87.04
3299.76 -87.23
3299.74 -87.25
3299.68 -87.22
3299.68 -87.11
r command-line
add a comment |
I have a list of XY coordinates along multiple lines. The lines are separated by a single identifier at the start of each block of coordinates. How do I convert this to multiple lines linking the identifier to the lines in R so that I can output them as a shapefile? The problem is in parsing the data to link the ID with the subsequent coordinates.
The data is in the following format:
ID1
3285.48 -63.32
3285.14 -64.14
3284.67 -63.56
3285.00 -62.77
ID2
3299.84 -76.82
3299.25 -75.38
3299.96 -75.76
ID3
3299.76 -86.92
3299.77 -86.89
3299.76 -87.04
3299.76 -87.23
3299.74 -87.25
3299.68 -87.22
3299.68 -87.11
r command-line
I have a list of XY coordinates along multiple lines. The lines are separated by a single identifier at the start of each block of coordinates. How do I convert this to multiple lines linking the identifier to the lines in R so that I can output them as a shapefile? The problem is in parsing the data to link the ID with the subsequent coordinates.
The data is in the following format:
ID1
3285.48 -63.32
3285.14 -64.14
3284.67 -63.56
3285.00 -62.77
ID2
3299.84 -76.82
3299.25 -75.38
3299.96 -75.76
ID3
3299.76 -86.92
3299.77 -86.89
3299.76 -87.04
3299.76 -87.23
3299.74 -87.25
3299.68 -87.22
3299.68 -87.11
r command-line
r command-line
asked Apr 8 at 12:57
xyzbluexyzblue
89210
89210
add a comment |
add a comment |
1 Answer
1
active
oldest
votes
You can read in irregular data if you know the max number of columns by giving column names and a fill
argument:
> data = read.table("./lines.txt",col.names=c("x","y"),fill=TRUE, stringsAsFactors=FALSE)
> data
x y
1 ID1 NA
2 3285.48 -63.32
3 3285.14 -64.14
4 3284.67 -63.56
5 3285.00 -62.77
6 ID2 NA
7 3299.84 -76.82
8 3299.25 -75.38
9 3299.96 -75.76
10 ID3 NA
Then the lines are grouped by how many NA
are in the second column so far:
> data$group = cumsum(is.na(data$y))
> data
x y group
1 ID1 NA 1
2 3285.48 -63.32 1
3 3285.14 -64.14 1
4 3284.67 -63.56 1
5 3285.00 -62.77 1
6 ID2 NA 2
7 3299.84 -76.82 2
8 3299.25 -75.38 2
9 3299.96 -75.76 2
10 ID3 NA 3
Then you can pull out the IDS:
> IDS = data$x[is.na(data$y)]
> IDS
[1] "ID1" "ID2" "ID3"
And filter them out:
> data = data[!is.na(data$y),]
> data
x y group
2 3285.48 -63.32 1
3 3285.14 -64.14 1
4 3284.67 -63.56 1
5 3285.00 -62.77 1
7 3299.84 -76.82 2
8 3299.25 -75.38 2
9 3299.96 -75.76 2
11 3299.76 -86.92 3
Then split by group gives you a list of data frames you can apply work to:
> par(ask=TRUE)
> lapply(split(data,data$group), function(d)plot(d$x,d$y,type="l"))
Hit <Return> to see next plot:
Hit <Return> to see next plot:
Hit <Return> to see next plot:
Replace that function with whatever you want to do with each line data set, and attach the IDS extracted in the previous step as needed.
Note at this point the columns might still be character so coercion to numeric might be helpful via as.numeric
.
If you want to make sf
spatial lines data frame, then proceed:
data$x = as.numeric(data$x)
library(sf)
lfc = do.call(st_sfc,
lapply(split(data, data$group),
function(d)st_linestring(as.matrix(d[,1:2]))))
lfd = st_sf(data.frame(ID=IDS, geom=lfc))
plot(lfd,lwd=5)
to get...
that fill part is sweet, really neat
– mdsumner
Apr 9 at 0:14
This is a great answer to the problem @Spacedman - do you think it would scale well with very large datasets (millions of lines)? I have tried to do something similar with the unix utility awk but like you I had to go through the data multiple times processing and writing to get a fairly simple additional column?
– xyzblue
Apr 9 at 14:23
Took about ten seconds to process a 1,000,000 line file that had 10,000 features each with 100 points in it, resulting in a spatial sf data frame with 10,000 features.
– Spacedman
Apr 9 at 15:29
Well that seems sufficiently fast! Thanks again @Spacedman
– xyzblue
Apr 9 at 20:10
add a comment |
Your Answer
StackExchange.ready(function()
var channelOptions =
tags: "".split(" "),
id: "79"
;
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function()
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled)
StackExchange.using("snippets", function()
createEditor();
);
else
createEditor();
);
function createEditor()
StackExchange.prepareEditor(
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: false,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: null,
bindNavPrevention: true,
postfix: "",
imageUploader:
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
,
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
);
);
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fgis.stackexchange.com%2fquestions%2f318117%2fconvert-lists-of-coordinates-to-multiple-lines-based-on-id-at-start-of-each-bloc%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
You can read in irregular data if you know the max number of columns by giving column names and a fill
argument:
> data = read.table("./lines.txt",col.names=c("x","y"),fill=TRUE, stringsAsFactors=FALSE)
> data
x y
1 ID1 NA
2 3285.48 -63.32
3 3285.14 -64.14
4 3284.67 -63.56
5 3285.00 -62.77
6 ID2 NA
7 3299.84 -76.82
8 3299.25 -75.38
9 3299.96 -75.76
10 ID3 NA
Then the lines are grouped by how many NA
are in the second column so far:
> data$group = cumsum(is.na(data$y))
> data
x y group
1 ID1 NA 1
2 3285.48 -63.32 1
3 3285.14 -64.14 1
4 3284.67 -63.56 1
5 3285.00 -62.77 1
6 ID2 NA 2
7 3299.84 -76.82 2
8 3299.25 -75.38 2
9 3299.96 -75.76 2
10 ID3 NA 3
Then you can pull out the IDS:
> IDS = data$x[is.na(data$y)]
> IDS
[1] "ID1" "ID2" "ID3"
And filter them out:
> data = data[!is.na(data$y),]
> data
x y group
2 3285.48 -63.32 1
3 3285.14 -64.14 1
4 3284.67 -63.56 1
5 3285.00 -62.77 1
7 3299.84 -76.82 2
8 3299.25 -75.38 2
9 3299.96 -75.76 2
11 3299.76 -86.92 3
Then split by group gives you a list of data frames you can apply work to:
> par(ask=TRUE)
> lapply(split(data,data$group), function(d)plot(d$x,d$y,type="l"))
Hit <Return> to see next plot:
Hit <Return> to see next plot:
Hit <Return> to see next plot:
Replace that function with whatever you want to do with each line data set, and attach the IDS extracted in the previous step as needed.
Note at this point the columns might still be character so coercion to numeric might be helpful via as.numeric
.
If you want to make sf
spatial lines data frame, then proceed:
data$x = as.numeric(data$x)
library(sf)
lfc = do.call(st_sfc,
lapply(split(data, data$group),
function(d)st_linestring(as.matrix(d[,1:2]))))
lfd = st_sf(data.frame(ID=IDS, geom=lfc))
plot(lfd,lwd=5)
to get...
that fill part is sweet, really neat
– mdsumner
Apr 9 at 0:14
This is a great answer to the problem @Spacedman - do you think it would scale well with very large datasets (millions of lines)? I have tried to do something similar with the unix utility awk but like you I had to go through the data multiple times processing and writing to get a fairly simple additional column?
– xyzblue
Apr 9 at 14:23
Took about ten seconds to process a 1,000,000 line file that had 10,000 features each with 100 points in it, resulting in a spatial sf data frame with 10,000 features.
– Spacedman
Apr 9 at 15:29
Well that seems sufficiently fast! Thanks again @Spacedman
– xyzblue
Apr 9 at 20:10
add a comment |
You can read in irregular data if you know the max number of columns by giving column names and a fill
argument:
> data = read.table("./lines.txt",col.names=c("x","y"),fill=TRUE, stringsAsFactors=FALSE)
> data
x y
1 ID1 NA
2 3285.48 -63.32
3 3285.14 -64.14
4 3284.67 -63.56
5 3285.00 -62.77
6 ID2 NA
7 3299.84 -76.82
8 3299.25 -75.38
9 3299.96 -75.76
10 ID3 NA
Then the lines are grouped by how many NA
are in the second column so far:
> data$group = cumsum(is.na(data$y))
> data
x y group
1 ID1 NA 1
2 3285.48 -63.32 1
3 3285.14 -64.14 1
4 3284.67 -63.56 1
5 3285.00 -62.77 1
6 ID2 NA 2
7 3299.84 -76.82 2
8 3299.25 -75.38 2
9 3299.96 -75.76 2
10 ID3 NA 3
Then you can pull out the IDS:
> IDS = data$x[is.na(data$y)]
> IDS
[1] "ID1" "ID2" "ID3"
And filter them out:
> data = data[!is.na(data$y),]
> data
x y group
2 3285.48 -63.32 1
3 3285.14 -64.14 1
4 3284.67 -63.56 1
5 3285.00 -62.77 1
7 3299.84 -76.82 2
8 3299.25 -75.38 2
9 3299.96 -75.76 2
11 3299.76 -86.92 3
Then split by group gives you a list of data frames you can apply work to:
> par(ask=TRUE)
> lapply(split(data,data$group), function(d)plot(d$x,d$y,type="l"))
Hit <Return> to see next plot:
Hit <Return> to see next plot:
Hit <Return> to see next plot:
Replace that function with whatever you want to do with each line data set, and attach the IDS extracted in the previous step as needed.
Note at this point the columns might still be character so coercion to numeric might be helpful via as.numeric
.
If you want to make sf
spatial lines data frame, then proceed:
data$x = as.numeric(data$x)
library(sf)
lfc = do.call(st_sfc,
lapply(split(data, data$group),
function(d)st_linestring(as.matrix(d[,1:2]))))
lfd = st_sf(data.frame(ID=IDS, geom=lfc))
plot(lfd,lwd=5)
to get...
that fill part is sweet, really neat
– mdsumner
Apr 9 at 0:14
This is a great answer to the problem @Spacedman - do you think it would scale well with very large datasets (millions of lines)? I have tried to do something similar with the unix utility awk but like you I had to go through the data multiple times processing and writing to get a fairly simple additional column?
– xyzblue
Apr 9 at 14:23
Took about ten seconds to process a 1,000,000 line file that had 10,000 features each with 100 points in it, resulting in a spatial sf data frame with 10,000 features.
– Spacedman
Apr 9 at 15:29
Well that seems sufficiently fast! Thanks again @Spacedman
– xyzblue
Apr 9 at 20:10
add a comment |
You can read in irregular data if you know the max number of columns by giving column names and a fill
argument:
> data = read.table("./lines.txt",col.names=c("x","y"),fill=TRUE, stringsAsFactors=FALSE)
> data
x y
1 ID1 NA
2 3285.48 -63.32
3 3285.14 -64.14
4 3284.67 -63.56
5 3285.00 -62.77
6 ID2 NA
7 3299.84 -76.82
8 3299.25 -75.38
9 3299.96 -75.76
10 ID3 NA
Then the lines are grouped by how many NA
are in the second column so far:
> data$group = cumsum(is.na(data$y))
> data
x y group
1 ID1 NA 1
2 3285.48 -63.32 1
3 3285.14 -64.14 1
4 3284.67 -63.56 1
5 3285.00 -62.77 1
6 ID2 NA 2
7 3299.84 -76.82 2
8 3299.25 -75.38 2
9 3299.96 -75.76 2
10 ID3 NA 3
Then you can pull out the IDS:
> IDS = data$x[is.na(data$y)]
> IDS
[1] "ID1" "ID2" "ID3"
And filter them out:
> data = data[!is.na(data$y),]
> data
x y group
2 3285.48 -63.32 1
3 3285.14 -64.14 1
4 3284.67 -63.56 1
5 3285.00 -62.77 1
7 3299.84 -76.82 2
8 3299.25 -75.38 2
9 3299.96 -75.76 2
11 3299.76 -86.92 3
Then split by group gives you a list of data frames you can apply work to:
> par(ask=TRUE)
> lapply(split(data,data$group), function(d)plot(d$x,d$y,type="l"))
Hit <Return> to see next plot:
Hit <Return> to see next plot:
Hit <Return> to see next plot:
Replace that function with whatever you want to do with each line data set, and attach the IDS extracted in the previous step as needed.
Note at this point the columns might still be character so coercion to numeric might be helpful via as.numeric
.
If you want to make sf
spatial lines data frame, then proceed:
data$x = as.numeric(data$x)
library(sf)
lfc = do.call(st_sfc,
lapply(split(data, data$group),
function(d)st_linestring(as.matrix(d[,1:2]))))
lfd = st_sf(data.frame(ID=IDS, geom=lfc))
plot(lfd,lwd=5)
to get...
You can read in irregular data if you know the max number of columns by giving column names and a fill
argument:
> data = read.table("./lines.txt",col.names=c("x","y"),fill=TRUE, stringsAsFactors=FALSE)
> data
x y
1 ID1 NA
2 3285.48 -63.32
3 3285.14 -64.14
4 3284.67 -63.56
5 3285.00 -62.77
6 ID2 NA
7 3299.84 -76.82
8 3299.25 -75.38
9 3299.96 -75.76
10 ID3 NA
Then the lines are grouped by how many NA
are in the second column so far:
> data$group = cumsum(is.na(data$y))
> data
x y group
1 ID1 NA 1
2 3285.48 -63.32 1
3 3285.14 -64.14 1
4 3284.67 -63.56 1
5 3285.00 -62.77 1
6 ID2 NA 2
7 3299.84 -76.82 2
8 3299.25 -75.38 2
9 3299.96 -75.76 2
10 ID3 NA 3
Then you can pull out the IDS:
> IDS = data$x[is.na(data$y)]
> IDS
[1] "ID1" "ID2" "ID3"
And filter them out:
> data = data[!is.na(data$y),]
> data
x y group
2 3285.48 -63.32 1
3 3285.14 -64.14 1
4 3284.67 -63.56 1
5 3285.00 -62.77 1
7 3299.84 -76.82 2
8 3299.25 -75.38 2
9 3299.96 -75.76 2
11 3299.76 -86.92 3
Then split by group gives you a list of data frames you can apply work to:
> par(ask=TRUE)
> lapply(split(data,data$group), function(d)plot(d$x,d$y,type="l"))
Hit <Return> to see next plot:
Hit <Return> to see next plot:
Hit <Return> to see next plot:
Replace that function with whatever you want to do with each line data set, and attach the IDS extracted in the previous step as needed.
Note at this point the columns might still be character so coercion to numeric might be helpful via as.numeric
.
If you want to make sf
spatial lines data frame, then proceed:
data$x = as.numeric(data$x)
library(sf)
lfc = do.call(st_sfc,
lapply(split(data, data$group),
function(d)st_linestring(as.matrix(d[,1:2]))))
lfd = st_sf(data.frame(ID=IDS, geom=lfc))
plot(lfd,lwd=5)
to get...
edited Apr 8 at 13:23
answered Apr 8 at 13:14
SpacedmanSpacedman
25k23551
25k23551
that fill part is sweet, really neat
– mdsumner
Apr 9 at 0:14
This is a great answer to the problem @Spacedman - do you think it would scale well with very large datasets (millions of lines)? I have tried to do something similar with the unix utility awk but like you I had to go through the data multiple times processing and writing to get a fairly simple additional column?
– xyzblue
Apr 9 at 14:23
Took about ten seconds to process a 1,000,000 line file that had 10,000 features each with 100 points in it, resulting in a spatial sf data frame with 10,000 features.
– Spacedman
Apr 9 at 15:29
Well that seems sufficiently fast! Thanks again @Spacedman
– xyzblue
Apr 9 at 20:10
add a comment |
that fill part is sweet, really neat
– mdsumner
Apr 9 at 0:14
This is a great answer to the problem @Spacedman - do you think it would scale well with very large datasets (millions of lines)? I have tried to do something similar with the unix utility awk but like you I had to go through the data multiple times processing and writing to get a fairly simple additional column?
– xyzblue
Apr 9 at 14:23
Took about ten seconds to process a 1,000,000 line file that had 10,000 features each with 100 points in it, resulting in a spatial sf data frame with 10,000 features.
– Spacedman
Apr 9 at 15:29
Well that seems sufficiently fast! Thanks again @Spacedman
– xyzblue
Apr 9 at 20:10
that fill part is sweet, really neat
– mdsumner
Apr 9 at 0:14
that fill part is sweet, really neat
– mdsumner
Apr 9 at 0:14
This is a great answer to the problem @Spacedman - do you think it would scale well with very large datasets (millions of lines)? I have tried to do something similar with the unix utility awk but like you I had to go through the data multiple times processing and writing to get a fairly simple additional column?
– xyzblue
Apr 9 at 14:23
This is a great answer to the problem @Spacedman - do you think it would scale well with very large datasets (millions of lines)? I have tried to do something similar with the unix utility awk but like you I had to go through the data multiple times processing and writing to get a fairly simple additional column?
– xyzblue
Apr 9 at 14:23
Took about ten seconds to process a 1,000,000 line file that had 10,000 features each with 100 points in it, resulting in a spatial sf data frame with 10,000 features.
– Spacedman
Apr 9 at 15:29
Took about ten seconds to process a 1,000,000 line file that had 10,000 features each with 100 points in it, resulting in a spatial sf data frame with 10,000 features.
– Spacedman
Apr 9 at 15:29
Well that seems sufficiently fast! Thanks again @Spacedman
– xyzblue
Apr 9 at 20:10
Well that seems sufficiently fast! Thanks again @Spacedman
– xyzblue
Apr 9 at 20:10
add a comment |
Thanks for contributing an answer to Geographic Information Systems Stack Exchange!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fgis.stackexchange.com%2fquestions%2f318117%2fconvert-lists-of-coordinates-to-multiple-lines-based-on-id-at-start-of-each-bloc%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown