Yes you can do that. It perfectly acceptable.
You are essentially addressing the point in the top left corner of each square. and selecting the right or lower edge. Alternately you are addressing the square and its left, or upper edge.
If the association of the edge to this point/square is irrelevant you could address the edges directly.
h| (0,0), (0,1), (0,2)
v| (1,1), (1,1), (1,2), (1,3)
h| (2,0), (2,1), (2,2)
v| (3,1), (3,1), (3,2), (3,3)
h| (4,0), (4,1), (4,2)
v| (5,1), (5,1), (5,2), (5,3)
h| (6,0), (6,1), (6,2)
v| (7,1), (7,1), (7,2), (7,3)
h| (8,0), (8,1), (8,2)
In this way the column essential identifies if the edge is horizontal or vertical.
Even better there are two enhancements you can go from here with:
1) interleave the face and the corner points into the addressing scheme. These would essentially be additional rows with a 3-4 columns.
2) use a single number to identify the exact edge/point/face in the grid. The first row/column is zero and increment through each column then the next row. This drastically simplifies your interface to a single number. And you can still tell if you have a vertical or horizontal edge (or point or face) by some simple arithmetic.
id mod 2n+1 < n where
n is the number of faces wide the grid is, if true means this is a horizontal edge, otherwise its vertical.
If its a horizontal edge adding
n+1 gives you the vertical edges below it on the left or right. Subtracting it gives you the top left and right vertical edges.